나는 openssl 복어 암호화 된 암호를 해독하는 데 도움이되는 파이썬 라이브러리를 찾고있었습니다.Python으로 unsalted openssl 호환 복어 CBC/PKCS5Padding 암호를 해독하는 방법?
나는 자바에서 이것을 달성 할 수 있었다. 그러나 이것을 지원하기위한 파이썬 라이브러리는 더 많은 학습 곡선을 나타 냈고, 자신 만의 롤링이 필요했다.
우리가 달성해야하는 측면에서 암호는 무제한이며 암호를 사용합니다.이 질문에서이 암호를 "AAAAAAAA"로 설정했습니다. Cipher는 "Blowfish/CBC/PKCS5Padding"입니다. 암호화 된 텍스트는 키와 같은 문자열로 읽히고 iv. 하려면 openssl에서
,이 '단순히'이다
이private static final String KEY = "AAAAAAAA000000000000000000000000";
private static final String IV = "AAAAAAAA00000000";
private static final String FCN = "Blowfish/CBC/PKCS5Padding";
private static final String CN = "Blowfish";
final byte[] encoded = Base64.decode("eAIUXziwB8QbBexkiIDR3A==");
final SecretKeySpec key =
new SecretKeySpec(Hex.decodeHex(KEY.toCharArray()), CN);
final Cipher cipher = Cipher.getInstance(FCN, JCE_PROVIDER);
cipher.init(Cipher.DECRYPT_MODE, key, new IvParameterSpec(Hex.decodeHex(IV.toCharArray())));
final byte[] decrypted = cipher.doFinal(encoded);
return new String(decrypted);
사람이 파이썬에 대한 몇 가지 지침을 제공 할 수 있습니다 : 자바에서
~$ # This is encrypting
~$ echo -n 'password' | openssl enc -bf -nosalt -a -K AAAAAAAA -iv AAAAAAAA
eAIUXziwB8QbBexkiIDR3A==
~$ # This is reversing the encryption
~$ echo 'eAIUXziwB8QbBexkiIDR3A==' | openssl enc -d -bf -nosalt -a -K AAAAAAAA -iv AAAAAAAA
password
에서, descryption가의 라인을 따라입니까?
가 완벽하게 작동, 감사합니다. 나는 도서관을 시험해 보았지만 실제로 hex/base64 사이의 적절한 변환을 놓쳤다. – user1640422
여러분을 환영합니다! 그런데, 소금을 사용해야합니다. 소금을 사용하지 않으면 암호에 대한 사전 사전 공격을 수행 할 수 있습니다. –