당신은 Rijndael을 일반적인 오해 인 AES와 동일시합니다.
AES은 그것의 서브 세트 - Rijndael을 128 만 키 크기 인 AES 변형 간의 차이 :
- AES-128는 128 비트 키 Rijndael을-128이다.
- AES-256은 다시 Rijndael-128이지만 256 비트 키를 사용합니다. 당신은 256 비트 블록 크기를 필요로하는 물론 당신은 AES를 수행하여 Rijndael을-256을 얻을 수 있도록
는
반면에 Rijndael을 변화의 접미사 수는 모두 키 크기 블록 크기에 의미 .
phpseclib docs에는 기본 변수 (암호, 모드, 키 크기, 비트 크기)를 입력 한 후 샘플 코드가 생성되는 페이지가 있습니다.
<?php
include('Crypt/Rijndael.php');
include('Crypt/Random.php');
$cipher = new Crypt_Rijndael(); // could use CRYPT_RIJNDAEL_MODE_CBC
$cipher->setBlockLength(256);
// keys are null-padded to the closest valid size
// longer than the longest key and it's truncated
//$cipher->setKeyLength(256);
$cipher->setKey('abcdefghijklmnopqrstuvwxyz123456');
// the IV defaults to all-NULLs if not explicitly defined
$cipher->setIV(crypt_random_string($cipher->getBlockLength() >> 3));
$size = 10 * 1024;
$plaintext = str_repeat('a', $size);
echo $cipher->decrypt($cipher->encrypt($plaintext));
내가 라이브러리가 실제로 Mcrypt 라이브러리의 가용성 기능이없는 시스템이 암호를 지원하는 경우 잘 모르겠지만, 그것은해야한다 : 그것은 Rijndael, CBC, 256, 256에 대해 다음 출력합니다.
mcrypt가 PHP에서 삭제되기 때문에이 작업을 수행한다고 가정합니다. 전략을 변경하는 것이 좋습니다.
위의 코드가 작동하더라도 phpeclib 문서에 언급 된 사용자 정의 PHP 구현을 사용할 때 속도가 매우 느릴 수 있지만 더 중요하게 -이 라이브러리가 중지되면 다른 대안은 없습니다. Rijndael의 비 AES 변형은 유비 쿼터스가 아니며 오늘날에는 더 많은 최신 알고리즘이 제공됩니다 (힌트 : libsodium이 PHP 7.2에 추가됨).
내가 너라면, 알고리즘을 완전히 바꿀 것입니다. 물론 이것은 모든 데이터를 다시 암호화하는 것을 의미 할 것입니다.하지만 결국은 그렇게해야 할 것입니다. 그리고 지금은 실제로 그렇게하는 것이 가장 좋은시기입니다.
다른 lib로 결과를 해독 할 수 있습니까? –
잘 모르겠지만 (보안을 위해) 동일한 텍스트를 두 번 암호화하도록 허용하지 않는 기본 동작이 아닙니다. –
@RafailAkhmetshin 아니요, 다른 라이브러리로 해독하지 않습니다. 이 알고리즘으로 데이터를 암호화해야하는 서비스가 있습니다. – undone