질문 : McRypt에서 OpenSSL로 내 암호화 라이브러리를 업그레이드 할 수 있습니까? 그렇다면 어떻게?
대답 :
예, McRypt에서 OpenSSL로 암호화 라이브러리를 업그레이드 할 수 있습니다. OpenSSL? OpenSSL을 사용하여 McRypt로 암호화 된 데이터를 해독하는 방법 :
public function decrypt ($ data, $ key) { $ salt = substr ($ data, 0, 128); $ enc = substr ($ data, 128, -64); $ mac = substr ($ data, -64); 목록 ($ cipherkey, $ mackey, $ iv) = $ this-> getKeys ($ salt, $ key); if ($ mac! == hash_hmac ( 'sha512', $ enc, $ mackey, true)) { 거짓을 반환합니다. } $ dec = OpenSSL_DECRYPT ($ enc, $ this-> cipher, $ cipherkey, openssl_raw_data, $ iv); Return $ Dec; }추가 참고 사항 :
OpenSSL_DECRYPT () 함수는 IV 매개 변수가 사용중인 CIPHER의 블록 크기와 동일한 길이를 요구합니다. &&]
IV 매개 변수가 사용중인 암호의 블록 크기와 길이가 같지 않으면 CBC 모드에서 OpenSSL_DECRYPT () 함수를 사용해야합니다. 테스트 :다음 코드를 사용하여 decrypt () 함수를 테스트 할 수 있습니다 :
$ keys = [
'이것은 비밀 키입니다.',
'g906m70p (ihza5t & 5x7 (w0.31) u) �e79ciyjq! ip2u (xt13q6) tj6gz3d2wi & 0 ") 7cp5',
chr (6). chr (200). chr (16). '내 열쇠'. chr (3). chr (4). Chr (192). chr (254). 'zyx0987 !!',
'그리고 마지막으로 여기에서 테스트 할 열쇠가 하나 더 있습니다.',
];
$ data = [
'에이',
'이것은 테스트입니다',
'이제 1234567890으로 조금 더 오래 암호화하는 테스트.',
'$ length = mcrypt_get_block_size (mcrypt_blowfish, mcrypt_mode_cbc); $ last = ord ($ data [strlen ($ data) -1]); ',
'Lorem ipsum dolor sit amet, consectetur hoodiscing elit. Donec Sit Amet Pharetra Urna. Faucibus orci luctus et ultrices posuere cubilia curae의 vestibulum ante ipsum primis; ut fringilla, quam sed eleifend eleifend, justo turpis consectetur tellus, nibh의 quis tristique eros erat. Nunc Dictum neque vel diam 성추행 발효. Pellentesque dignissim dui quis tortor eleifend, ut maximus elit egestas. Donec Posuere Odio et auctor porta. Quisque Placerat 조건 Maximus. Dignissim Tortor Venenatis에서 Curabitur luctus dolor eget sem luctus. Mauris Eget Nulla Nisl. ',
];
$ 실패 = 0;
foreach ($ data as $ datum) {
foreach ($ 키로 $ 키) {
$ enc = 새로운 암호화 (McRypt_blowfish, McRypt_mode_cbc);
$ alcrypted = $ enc-> encrypt ($ datum, $ key);
$ dec = new encryptionopenssl ( 'bf-cbc');
$ decrypted = $ dec-> decrypt ($ 암호화, $ key);
if (strcmp ($ datum, $ decrypted)! == 0) {
'$ Datum'의 '$ key'가있는 암호화 '$ decrypted'! = '$ datum'
\ n \ n ";
$ 실패;
}
}
}
if ($ 실패) {
Echo "$ 장애 테스트 실패.
\ n";
} 또 다른 {
에코 "모두 괜찮아
\ n";
}
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3