P粉0142181242023-08-31 10:27:11
기능 build3DesKey()
将一个太短的3DES密钥扩展到24个字节,通过在末尾填充0x00值,对于太长的密钥,末尾会被简单地截断。在PHP中,可以如下实现 build3DesKey()
:
기능이 부족함에도 불구하고 str2ByteArray()
,但其功能可以推断出来。由于在您的示例中,密文是十六进制编码的,所以这个函数似乎只是执行十六进制解码。在PHP中,与 str2ByteArray()
相对应的是 hex2bin()
.
그래서 가능한 해독 구현은 다음과 같습니다(PHP/OpenSSL 사용):
으아악이러한 입력 데이터는 Java 코드에서 동일한 일반 텍스트를 반환합니다!
코드와의 차이점:
귀하의 코드는 더 이상 사용되지 않는 mcrypt
를 사용합니다. 보안상의 이유로 지금은 사용하면 안 됩니다. 더 나은 대안은 위 코드에 표시된 것처럼 PHP/OpenSSL입니다. 또한 구현된 키 파생이 잘못되었습니다. 예를 들어 Java 코드에서 전혀 사용되지 않는 MD5 다이제스트를 적용합니다.
보안:
오래된 앱일 수 있지만 보안에 대한 몇 가지 참고 사항:
build3DesKey()
은 안전하지 않습니다. 키 자료가 문자열인 경우 일반적으로 키가 아니라 비밀번호입니다. 따라서 Argon2 또는 PBKDF2와 같은 신뢰할 수 있는 키 파생 함수를 사용해야 합니다.