質問: opensslは0.9.8oと1.1.0fの間で不正な復号化を行う opensslを使用してクリアテキストをエンコードし、複数のリモートサーバーでデコードします。 debian 9 stretchの互換性を確認するためにスクリプトをテストしていたところ、エラーが見つかりました。これが私がテストする方法です:文字列をエンコードするdebian 6、openssl 0.9.8o:# echo "hi guys" | openssl des3 -salt -a -k "testkey" u2fsdgvkx1+i3ebhxjqrm+mjomkrpj+y5ttnjajji/s= 同じサーバーでのデコード:# echo "u2fsdgvkx1+i3ebhxjqrm+mjomkrpj+y5ttnjajji/s=" | openssl des3 -salt -a -d -k "testkey" hi guys 文字列をデコードするdebian 9、openssl 1.1.0f:# echo "u2fsdgvkx1+i3ebhxjqrm+mjomkrpj+y5ttnjajji/s=" | openssl des3 -salt -a -d -k "testkey" bad decrypt 140259873273088:error:06065064:digital envelope routines:evp_decryptfinal_ex:bad decrypt:../crypto/evp/evp_enc.c:535: z���ar� デコード処理中:debian 7、openssl 1.0.1t:$ echo "u2fsdgvkx1+i3ebhxjqrm+mjomkrpj+y5ttnjajji/s=" | openssl des3 -salt -a -d -k "testkey" hi guys debian 8、openssl 1.0.1t# echo "u2fsdgvkx1+i3ebhxjqrm+mjomkrpj+y5ttnjajji/s=" | openssl des3 -salt -a -d -k "testkey" hi guys そのため、debian 9、openssl 1.1.0fテストサーバーでエンコードをテストしました。# echo "hi guys" | openssl des3 -salt -a -k "testkey" u2fsdgvkx1+p/ldtootr/gmvtfgl+labnpvlxkqwbok= そして、同じサーバーでのデコードが機能しています:# echo "u2fsdgvkx1+p/ldtootr/gmvtfgl+labnpvlxkqwbok=" | openssl des3 -salt -a -d -k "testkey" hi guys しかし、デコードは他の3つのサーバー(debian 6、openssl 0.9.8o)では機能しません。# echo "u2fsdgvkx1+p/ldtootr/gmvtfgl+labnpvlxkqwbok=" | openssl des3 -salt -a -d -k "testkey" bad decrypt 12605:error:06065064:digital envelope routines:evp_decryptfinal_ex:bad decrypt:evp_enc.c:330: ��rv�� debian 7、openssl 1.0.1t:$ echo "u2fsdgvkx1+p/ldtootr/gmvtfgl+labnpvlxkqwbok=" | openssl des3 -salt -a -d -k "testkey" bad decrypt 139771367589544:error:06065064:digital envelope routines:evp_decryptfinal_ex:bad decrypt:evp_enc.c:516: ▒▒rv▒▒ debian 8、openssl 1.0.1t:# echo "u2fsdgvkx1+p/ldtootr/gmvtfgl+labnpvlxkqwbok=" | openssl des3 -salt -a -d -k "testkey" bad decrypt 139719827605136:error:06065064:digital envelope routines:evp_decryptfinal_ex:bad decrypt:evp_enc.c:516: ▒▒rv▒▒ opensslの依存関係を確認し、各バージョンの複数のサーバーでテストしました。
回答: すみません、数分後、私はsebastian andrzej siewiorによるdebianバグトラッカーで答えを見つけました。 debianバグレポート#843064 ええと。キーを作成するために、デフォルトのダイジェストをmd5からsha256に変更しました。 1.1に「-md md5」を追加した場合。 opensslの場合は機能します。逆に言うと、1.0を満足させるには '-md sha256'が必要です。 したがって、debian 9で「-md md5」を追加すると、古いopensslエンコードされた文字列で動作します。# echo "u2fsdgvkx1+i3ebhxjqrm+mjomkrpj+y5ttnjajji/s=" | openssl des3 -salt -md md5 -a -d -k "testkey" hi guys 古いdebianに「-md sha256」を追加すると、新しいopensslエンコード文字列も機能します。# echo "u2fsdgvkx1+p/ldtootr/gmvtfgl+labnpvlxkqwbok=" | openssl des3 -md sha256 -salt -a -d -k "testkey" hi guys スレッドを維持して他の人の時間を節約する:)