Java 如何检查输入字符串是否是列表:[“md5”、“sha1”、“sha256”中算法的哈希值

Java 如何检查输入字符串是否是列表:[“md5”、“sha1”、“sha256”中算法的哈希值,java,cryptography,md5,sha1,sha256,Java,Cryptography,Md5,Sha1,Sha256,我必须这样写方法: boolean isHash(String str){ ... } 若输入字符串是md5哈希、sha1哈希或sha256哈希,则方法应返回true 有可能实现这样的方法吗?您可以通过使用正则表达式或java中的任何其他方式检查哈希中的十六进制字符串表示来验证哈希 例如,如果我们有一个字符串测试: md5 hash=098F6BC4621D373CADE4E832627B4F6正则表达式-^[a-fA-F0-9]{32}$ sha1 hash=a94a8fe5ccb19b

我必须这样写方法:

boolean isHash(String str){
  ...
}
若输入字符串是md5哈希、sha1哈希或sha256哈希,则方法应返回true


有可能实现这样的方法吗?

您可以通过使用正则表达式或java中的任何其他方式检查哈希中的十六进制字符串表示来验证哈希

例如,如果我们有一个字符串测试:

md5 hash=098F6BC4621D373CADE4E832627B4F6正则表达式-^[a-fA-F0-9]{32}$

sha1 hash=a94a8fe5ccb19ba61c4c0873d391e987982fbbd3正则表达式-^[a-fA-F0-9]{40}$


sha256 hash=9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08正则表达式-^[a-fA-F0-9]{64}$

可能重复-每个hash具有不同的长度和标准。你试过什么?@stud3nt,sha256呢?@stud3nt这是唯一一种匹配这种正则表达式的哈希算法吗?不,不同的哈希算法会输出不同长度的哈希。如果只想检查给定字符串是否为有效哈希,则可以根据使用哈希算法的字符长度进行检查。请注意,还有其他算法,甚至是标准化算法,如SHA3-256和鲜为人知的SHA-512/256,其输出大小与SHA-256哈希相同。基本上,您确认输入由特定数量的十六进制编码字节组成,不多不少。是的,问题中算法的输出大小不同。@MaartenBodewes同意,很容易区分md5、sha1和sha256散列,因为它们的输出大小都不同。回答无效,因为您给出了正则表达式,但没有指定要使用的方法。我不得不在另外三个论坛上搜索,看它是否匹配