有一個ColdFusion alternaitive這個PHP函數:openssl_verify:有沒有ColdFusion的替代PHP函數openssl_verify()?
openssl_verify()
驗證簽名是使用與pub_key_id相關的公共密鑰 指定的數據是正確的。此 必須是與用於 簽名的私鑰對應的公鑰。
我已經看遍了所有,但似乎沒有任何。在此先感謝您的任何信息?
有一個ColdFusion alternaitive這個PHP函數:openssl_verify:有沒有ColdFusion的替代PHP函數openssl_verify()?
openssl_verify()
驗證簽名是使用與pub_key_id相關的公共密鑰 指定的數據是正確的。此 必須是與用於 簽名的私鑰對應的公鑰。
我已經看遍了所有,但似乎沒有任何。在此先感謝您的任何信息?
有沒有內置函數,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。
您可以嘗試使用cfexecute和OpenSSL CLI。 https://www.openssl.org/docs/manmaster/apps/verify.html
我不認爲有一個本地CF功能,但有人可能已經提交了udf到http://cflib.org/。 –
歡迎提供反饋,我會檢查出來。 –