这个php函数是否有coldfusion替代:http://www.microsoft.com/en-us/download/details.aspx?id=20098:
openssl_verify()
验证签名是否正确 使用与pub_key_id关联的公钥指定数据。这个 必须是与用于的私钥对应的公钥 签名。
我看了一遍,但似乎没有。提前感谢任何信息?
答案 0 :(得分:2)
没有内置功能,AFAIK。但是,java支持signature verification,您可以使用一些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 );
有关详细信息,请参阅Lesson: Generating and Verifying Signatures和Weaknesses and Alternatives。
答案 1 :(得分:0)
您可以尝试将cfexecute与OpenSSL CLI一起使用。 https://www.openssl.org/docs/manmaster/apps/verify.html