是否有一个Coldfusion替代php函数openssl_verify()?

时间:2016-04-07 15:39:15

标签: php coldfusion

这个php函数是否有coldfusion替代:http://www.microsoft.com/en-us/download/details.aspx?id=20098

  

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

我看了一遍,但似乎没有。提前感谢任何信息?

2 个答案:

答案 0 :(得分:2)

没有内置功能,AFAIK。但是,java支持signature verification,您可以使用一些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 );
    
  6. 有关详细信息,请参阅Lesson: Generating and Verifying SignaturesWeaknesses and Alternatives

答案 1 :(得分:0)

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