0

Python から Ruby に暗号化関数を書き直そうとしていますが、同じ結果が得られません。私は des ecb が安全ではなく、推奨されていないことを知っていますが、python と ruby​​ からのこの移植のために必要です。

Pythonで使用pyDesすると、次のものがあります。

import pyDes
salt = 'HeresATwentyFourDigtSalt'
data = 'thing to encrypt'
cipher = pyDes.triple_des(salt, pyDes.ECB, pad=None, padmode=pyDes.PAD_PKCS5)
encrypted = cipher.encrypt(data)
base64.b64encode(encrypted)
'b4SlfbPj6BzFJ2djzu/DTbtmeZ6erKP8'

今、ルビーで同じ暗号文を取得したい:

require "base64"
require "openssl"
salt = 'HeresATwentyFourDigtSalt'
data = 'thing to encrypt'
cipher = OpenSSL::Cipher::Cipher.new('DES-ECB')
cipher.encrypt
cipher.padding=0
cipher.key = salt
encrypted = cipher.update(data)
encrypted_final = encrypted + cipher.final
Base64.encode64(encrypted_final)
"pfHDx7yTWZ4vh8+AqiklPrNb+VHhcCyA\n"
4

1 に答える 1

1

質問を投稿している間にいくつかのバリエーションを試すのに少し時間を費やした後、解決策を見つけました。誰でも役立つ場合は、参照用にここに投稿してください-暗号はDES-EDE3改行トリムでパディングを1に設定する必要があります。

require "base64"
require "openssl"
salt = 'HeresATwentyFourDigtSalt'
data = 'thing to encrypt'
cipher = OpenSSL::Cipher::Cipher.new('DES-EDE3')
cipher.encrypt
cipher.padding=0
cipher.key = salt
encrypted = cipher.update(data)
encrypted_final = encrypted + cipher.final
Base64.encode64(encrypted_final).gsub(/\n/, "")
'b4SlfbPj6BzFJ2djzu/DTbtmeZ6erKP8'
于 2018-09-24T14:44:57.910 に答える