php函数openssl_verify()是否有Coldfusion替代方案


Is there a Coldfusion alternative to the php function openssl_verify()?

这个php函数是否有coldfusion替代:openssl_verive:

openssl_verify()验证签名对于使用与pub_key_id关联的公钥指定的数据。这必须是与用于签名。

我找遍了,但好像没有。提前感谢您提供任何信息?

没有内置函数AFAIK。然而,java支持签名验证,您可以使用一些java代码对其进行调整。

  1. 将要验证的数据转换为二进制。确切的步骤取决于你要验证的内容,但要说它是一个物理文件:

    dataBytes = fileReadBinary( "c:'path'someFile.zip" );
    
  2. 将签名值解码为二进制值。同样,"如何"取决于签名格式。如果是base64编码的字符串:

    signatureBytes = binaryDecode( base64SignatureString, "base64" );
    
  3. 从密钥库(或文件)加载证书并提取公钥:

    // 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();
    
  4. 创建Signature对象以执行验证。使用适当的算法(即SHA1withRSA等)、公钥和要验证的数据对其进行初始化:

    sign = createObject("java", "java.security.Signature").getInstance("SHA1withRSA");
    sign.initVerify( publicKey );
    sign.update( dataBytes );
    
  5. 最后,输入签名并验证其状态:

    isVerified = sign.verify(signatureBytes);
    writeDump( isVerified );
    

有关更多详细信息,请参阅第一课:生成和验证签名以及弱点和备选方案。

您可以尝试将cfexecute与OpenSSL CLI一起使用。https://www.openssl.org/docs/manmaster/apps/verify.html