aes
差分
このページの2つのバージョン間の差分を表示します。
両方とも前のリビジョン前のリビジョン | |||
aes [2022/08/11 02:05] – nullpon | aes [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 " | require " | ||
行 58: | 行 60: | ||
aes.encrypt | aes.encrypt | ||
- | key_iv | + | iv = OpenSSL::Random.random_bytes(aes.iv_len) |
- | aes.key = key_iv[0, aes.key_len] | + | aes.key = OpenSSL:: |
- | aes.iv = key_iv[aes.key_len, | + | aes.iv = iv |
# aes.auth_data = " | # aes.auth_data = " | ||
行 68: | 行 70: | ||
encrypted << aes.final | encrypted << aes.final | ||
- | puts [salt, encrypted, aes.auth_tag].map { |d| Base64.urlsafe_encode64(d, | + | |
+ | puts [salt, iv, encrypted, aes.auth_tag].map { |d| Base64.urlsafe_encode64(d, | ||
``` | ``` | ||
行 74: | 行 77: | ||
```ruby | ```ruby | ||
+ | # | ||
# usage: | # usage: | ||
# ruby dec.rb encrypted_text password | # ruby dec.rb encrypted_text password | ||
+ | # | ||
require " | require " | ||
require " | require " | ||
- | encrypted | + | data = ARGV[0] |
pass = ARGV[1] | pass = ARGV[1] | ||
- | salt, data, auth_tag = encrypted.split(" | + | salt, iv, encrypted, auth_tag = data.split(" |
aes = OpenSSL:: | aes = OpenSSL:: | ||
aes.decrypt | aes.decrypt | ||
- | + | aes.key | |
- | key_iv | + | aes.iv = iv |
- | + | aes.auth_tag | |
- | aes.key = key_iv[0, aes.key_len] | + | |
- | aes.iv = key_iv[aes.key_len, | + | |
# aes.auth_data = " | # aes.auth_data = " | ||
- | 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などでは設定できない。 | + | |
</ | </ |
aes.1660183504.txt.gz · 最終更新: 2022/08/11 02:05 by nullpon