試圖繞過簽名並使用/測試各種選項。多個OpenSSL RSA簽名方法產生不同的結果
我可以註冊使用這個命令:
openssl dgst -sha256 -sign private_key.pem -binary -out sig_file data_file
但文檔似乎是說,我也可以用這種方法
openssl dgst -sha256 -binary data_file > hash_file
openssl rsautl -sign -inkey private_key.pem -keyform PEM -in hash_file > sig_file2
但簽名時,我指望他們不同相同。要麼我錯過了選擇中的某些東西,要麼在我的假設中有其他錯誤。
這個問題的真正問題是:有沒有一種方法可以使用命令行選項進行簽名,因爲我已經擁有哈希值並生成與上面第一條命令相同的簽名。
爲了增加更多內容,我可以在代碼中輕鬆地重現第一條命令,它與上面的第一條命令相匹配,這意味着我可以首先使用計算出的散列值進行簽名。
mdctx = EVP_MD_CTX_create();
EVP_DigestInit_ex(mdctx, EVP_sha256(), NULL);
EVP_DigestUpdate(mdctx, data, len);
EVP_DigestFinal_ex(mdctx, hash, &s);
EVP_MD_CTX_destroy(mdctx);
kfile = fopen64(key_file, "r");
key = PEM_read_RSAPrivateKey(kfile, NULL, NULL, NULL);
fclose(kfile);
*sig = malloc(RSA_size(key));
RSA_sign(NID_sha256, hash, hlen, *sig, siglen, key);