ユーザ用ツール

サイト用ツール


aes

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
aes [2022/08/11 02:05] nullponaes [2022/08/31 09:46] (現在) nullpon
行 45: 行 45:
  
 ```ruby ```ruby
 +#
 # usage: # usage:
 #   ruby enc.rb plain_text password #   ruby enc.rb plain_text password
 +#
  
 require "openssl" require "openssl"
行 58: 行 60:
 aes.encrypt aes.encrypt
  
-key_iv = OpenSSL::PKCS5.pbkdf2_hmac_sha1(pass, salt, 2000, aes.key_len + aes.iv_len)+iv = OpenSSL::Random.random_bytes(aes.iv_len)
  
-aes.key = key_iv[0, aes.key_len] +aes.key = OpenSSL::PKCS5.pbkdf2_hmac_sha1(pass, salt, 2000, aes.key_len) 
-aes.iv = key_iv[aes.key_len, aes.iv_len]+aes.iv = iv
 # aes.auth_data = "secret" # aes.auth_data = "secret"
  
行 68: 行 70:
 encrypted << aes.final encrypted << aes.final
  
-puts [salt, encrypted, aes.auth_tag].map { |d| Base64.urlsafe_encode64(d, padding: false) }.join(".")+ 
 +puts [salt, iv, encrypted, aes.auth_tag].map { |d| Base64.urlsafe_encode64(d, padding: false) }.join(".")
 ``` ```
  
行 74: 行 77:
  
 ```ruby ```ruby
 +#
 # usage: # usage:
 #   ruby dec.rb encrypted_text password #   ruby dec.rb encrypted_text password
 +#
  
 require "openssl" require "openssl"
 require "base64" require "base64"
  
-encrypted = ARGV[0]+data = ARGV[0]
 pass = ARGV[1] pass = ARGV[1]
  
-salt, data, auth_tag = encrypted.split(".").map{ |d| Base64.urlsafe_decode64(d) }+salt, iv, encrypted, auth_tag = data.split(".").map{ |d| Base64.urlsafe_decode64(d) }
  
 aes = OpenSSL::Cipher.new("AES-256-GCM") aes = OpenSSL::Cipher.new("AES-256-GCM")
 aes.decrypt aes.decrypt
  
- +aes.key = OpenSSL::PKCS5.pbkdf2_hmac_sha1(pass, salt, 2000, aes.key_len) 
-key_iv = OpenSSL::PKCS5.pbkdf2_hmac_sha1(pass, salt, 2000, aes.key_len + aes.iv_len) +aes.iv iv 
- +aes.auth_tag auth_tag
-aes.key key_iv[0, aes.key_len] +
-aes.iv key_iv[aes.key_len, aes.iv_len]+
 # aes.auth_data = "secret" # aes.auth_data = "secret"
-aes.auth_tag = auth_tag 
  
 decrypted = "" decrypted = ""
-decrypted << aes.update(data)+decrypted << aes.update(encrypted)
 decrypted << aes.final decrypted << aes.final
  
行 103: 行 105:
 ``` ```
  
-auth_tag, auth_dataはAES-256-GCM、AES-128-GCMアルゴリズムで使用するメッセージ認証(データ改竄の検出)を行うためのデータ。auth_dataはオプショナルなので未指定でも可(もし指定するならこれもランダムなデータが望ましい)。 +auth_tag, auth_dataはAES-256-GCM、AES-128-GCMアルゴリズムで使用するメッセージ認証(データ改竄の検出)を行うためのデータ。auth_dataはオプショナルなので未指定でも可これらはメッセージ認証機能のないAES-256-CBCなどを選択した場合は設定できない。
- +
-メッセージ認証機能のないAES-256-CBCなどは設定できない。+
 </markdown> </markdown>
aes.1660183504.txt.gz · 最終更新: 2022/08/11 02:05 by nullpon