用于 TLS/SSL 密码套件强化的 Java 正则表达式

标签 java regex ssl regex-lookarounds

我需要 Java Regex,它可以匹配用于设置 SSL/TLS 密码的参数

有效密码: (为了一次性测试多个模式,请将它们添加到以逗号分隔的字符串中,稍后迭代每个模式以进行模式匹配)

"ALL:!kRSA:!CBC,ALL:-aRSA:-CBC:SHA256,ALL:!kRSA,ALL:!aRSA,ALL:!RSA,ALL:!EDH-RSA-DES-CBC-SHA,ALL:!DES-CBC,ALL:!DES,ALL:-RSA+AES-128-CBC+SHA256";

可以与 regex = "^((?:ALL)|(?:ALL)(:([!-]?(a|k)?[A-Z0-9]+([ +-]?(a|k)?[A-Z0-9]+)?)*)*)$";

但是当我尝试无效的密码时:(基本上它应该无法匹配)

invalidciphers = "ALL:+DES,+DES,-DES,DEFAULT:-aRSA,akRSA,kDHE-aRSA,!ECDHE";

无法创建一个。

谁能帮帮我吗?

最佳答案

您可以使用

^ALL(?::[!-]?[ak]?[A-Z0-9]+(?:[+-]?[ak]?[A-Z0-9]+)*)*(?:,ALL(?::[!-]?[ak]?[A-Z0-9]+(?:[+-]?[ak]?[A-Z0-9]+)*)*)*$

请参阅regex demo

该方案是^<single_pattern>(?:,<single_pattern>)*$ 。它匹配字符串的开头,然后是单个模式,然后是 0 次或多次出现的逗号,后跟单个模式,直到字符串末尾。

single_pattern这是ALL(?::[!-]?[ak]?[A-Z0-9]+(?:[+-]?[ak]?[A-Z0-9]+)*)* :

  • ALL - 一个子字符串
  • (?::[!-]?[ak]?[A-Z0-9]+(?:[+-]?[ak]?[A-Z0-9]+)*)* - 0次或多次出现
    • : - 冒号
    • [!-]? - 可选!-
    • [ak]? - 可选ak
    • [A-Z0-9]+ - 1+ 个大写字母或数字
    • (?:[+-]?[ak]?[A-Z0-9]+)* - 0次或多次出现
      • [+-]? - 可选+-
      • [ak]? - 可选ak
      • [A-Z0-9]+ - 1+ 个大写字母或数字

关于用于 TLS/SSL 密码套件强化的 Java 正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41628749/

相关文章:

java.lang.SecurityException : no manifest section for signature file entry 错误

java - FirefoxDriver() 不工作 - Selenium,Java

java - 使用正则表达式动态替换 URL 中的部分

java - 仅一个文件中几个小文件的SequenceFile压缩器

java - 应用程序无法启动 Activity 组件信息(Android)

regex - 正则表达式的解释

objective-c - 使用 PERL 兼容的正则表达式忽略查询中的字符串大小写

asp.net-mvc-2 - SSL 443端口冲突,如何让iis7.5不认为有其他进程在运行?

具有不同用户证书的 Java Rest 调用

.net - 如何在 C++ 中使用 .net 自动接受无效的 SSL 连接证书?