这个php函数是否有coldfusion替代:openssl_verive:
openssl_verify()
验证签名对于使用与pub_key_id关联的公钥指定的数据。这必须是与用于签名。
我找遍了,但好像没有。提前感谢您提供任何信息?
没有内置函数AFAIK。然而,java支持签名验证,您可以使用一些java代码对其进行调整。
-
将要验证的数据转换为二进制。确切的步骤取决于你要验证的内容,但要说它是一个物理文件:
dataBytes = fileReadBinary( "c:'path'someFile.zip" );
-
将签名值解码为二进制值。同样,"如何"取决于签名格式。如果是base64编码的字符串:
signatureBytes = binaryDecode( base64SignatureString, "base64" );
-
从密钥库(或文件)加载证书并提取公钥:
// Example: "C:'ColdFusion'jre'lib'security'cacerts" fis = createObject("java", "java.io.FileInputStream").init( pathToKeyStore ); keyStore = createObject("java", "java.security.KeyStore").getInstance("JKS"); // Default keystore password is "changeit" (do not keep the default. change it) keyStore.load(fis, keyStorePassword.toCharArray()); publicKey = keyStore.getCertificate( "yourCertAlias" ).getPublicKey();
-
创建Signature对象以执行验证。使用适当的算法(即SHA1withRSA等)、公钥和要验证的数据对其进行初始化:
sign = createObject("java", "java.security.Signature").getInstance("SHA1withRSA"); sign.initVerify( publicKey ); sign.update( dataBytes );
-
最后,输入签名并验证其状态:
isVerified = sign.verify(signatureBytes); writeDump( isVerified );
有关更多详细信息,请参阅第一课:生成和验证签名以及弱点和备选方案。
您可以尝试将cfexecute与OpenSSL CLI一起使用。https://www.openssl.org/docs/manmaster/apps/verify.html