【解決方法】JavaScriptで復号化する


AES 256 キーとともに暗号文と RSA 秘密キー (暗号化された形式) を持っているシナリオがあります。 私の懸念は、最初にAES 256キーを使用してRSA秘密キーを復号化するJavaScriptコードが必要であることです。初期化ベクトル(ランダムに生成された16ビット)を持っていません。 復号された RSA 秘密キーは、メインの暗号文を復号するために使用されます。
以下の Ruby コードを使用してデータを復号化できますが、JavaScript でも同じことを実現したいと考えています。

ルビコード:

ルビー
require 'openssl'
require 'base64'
private_key_path = 'C:\Users\User\Documents\Ruby\private3.pem'
passphrase = 'xxxxxxxxxxxxxxxxxx'
begin
private_key = OpenSSL::pKey::RSA.new(File.read(private_key_path), passphrase)
encrypted_ssn = File.read('C:\Users\User\Documents\RubyC=\input_case.txt')
decrypted_ssn = private_key.private_decrypt(Base64.decode64(encrypted_ssn))
puts "Decrypted SSN: #{decrypted_ssn}"
rescue Errno::ENOENT => e
puts "Error: #{e.message}. Make sure the file paths are correct."
rescue OpenSSL::pKey::RSAError => e
puts "Error: #{e.message}. Check if the private key or passphrase is correct."
end

キーフォーマット

(入力ケース)
暗号文形式: rnIlnXweYGYX107Lz7nAIYSASUpZsZoAAUS9zueA=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

秘密鍵:

—–RSA 秘密鍵の開始—–
Proc-Type: 4,ENCRYPTED
DEK 情報: AES-256-CBC、A7AF3A76C321D9FFFFFFFFFFFFFF

SOj8/nY3qkQKKcpjIXxCSIJey8LVuvYLMeZL+8BRrdnxM1RTNAMLeO3Gd7hD7PLJ
oBRsLmynXYVwIM6l0G1B+KBjXjb1K9iwnyrGFSbA3Fx8LnNaMHnfW+A3+bUUiBt0XXXXXXXXXXXXXX…

—–RSA 秘密鍵の終了—–

私が試したこと:

このコードを試してみると、「初期化ベクトルが間違っていますか?」というエラーが発生しました。 この問題の解決策とは何ですか?

解決策 1

基本的にはしないでください。
Javascript はクライアント上で実行され、Chrome で F12 を押すことができる人であれば誰でも表示できます。 これは、キーなども表示できることを意味します。これでは、暗号化の本質が無効になります。

さらに、JavaScript はクライアントまたはサーバー上のファイル システムにアクセスできないため、JavaScript が復号化するためにアクセスできるようにするには、暗号化されたメッセージ全体をクライアントのブラウザに転送する必要があります。

アイデア全体を再考する必要があると思います。これはおそらくあなたが思い描いている方法では不可能でしょう。

コメント

タイトルとURLをコピーしました