質問編集履歴

2

修正

2023/11/21 12:23

投稿

828kk88
828kk88

スコア61

test CHANGED
File without changes
test CHANGED
@@ -38,7 +38,8 @@
38
38
  from Crypto.Cipher import AES
39
39
  from base64 import b64encode
40
40
  import hashlib
41
+ def test_enc():
41
- # IVとキーをバイトに変換
42
+ # IVとキーをバイトに変換
42
43
  iv = bytes.fromhex(iv値)
43
44
  key = hashlib.sha256(キー.encode()).digest()
44
45
 
@@ -48,7 +49,7 @@
48
49
 
49
50
  # パディング処理
50
51
  padder = padding.PKCS7(128).padder()
51
-  padder_data = padder.update(data) + padder.finalize()
52
+ padder_data = padder.update(data) + padder.finalize()
52
53
 
53
54
  cipher = AES.new(key, AES.MODE_CBC, iv)
54
55
 

1

追記

2023/11/21 12:09

投稿

828kk88
828kk88

スコア61

test CHANGED
File without changes
test CHANGED
@@ -33,6 +33,40 @@
33
33
 
34
34
  ```
35
35
 
36
+ ライブラリ変えたパターン
37
+ ```ここに言語を入力
38
+ from Crypto.Cipher import AES
39
+ from base64 import b64encode
40
+ import hashlib
41
+ # IVとキーをバイトに変換
42
+ iv = bytes.fromhex(iv値)
43
+ key = hashlib.sha256(キー.encode()).digest()
44
+
45
+ # ファイルの読み込み
46
+ with open('before_encrypt.csv', 'rb') as f:
47
+ data = f.read()
48
+
49
+ # パディング処理
50
+ padder = padding.PKCS7(128).padder()
51
+  padder_data = padder.update(data) + padder.finalize()
52
+
53
+ cipher = AES.new(key, AES.MODE_CBC, iv)
54
+
55
+ # データを暗号化
56
+ encrypted_data = cipher.encrypt(padder_data)
57
+
58
+ # 暗号化されたデータをBase64エンコードしてファイルに書き込む
59
+ with open('encrypted.csv', 'wb') as f:
60
+ f.write(b64encode(encrypted_data))
61
+
62
+ ```
63
+
36
64
  このようなコードを書いているのですが、暗号化後のファイルの中身がopensslコマンドを実行する場合と全く異なるものになります。
37
65
 
66
+ 例えばaaaaaaaaaとだけ書いた適当なファイルを暗号化してみた結果
67
+ openssl暗号化→U2FsdGVkX19p4HtziF4MIqmV58VE9860Tc1oyQ2x+oI=
68
+ コードによる暗号化→OgSvtBFb7lqtEJYWzcpUJA==
69
+
70
+ のようになります
71
+
38
72
  -kオプションと-md sha256によるキーの変換が再現できていないように思われるのですが、なにかお気づきの方がいれば教えていただきたいです。