AES 256-bit 암호화
페이지 정보
작성자 MintState 댓글 0건 조회 23,060회 작성일 10-04-28 11:02본문
AES 256-bit 암호화
고급 암호 표준(AES, Advanced Encryption Standard)은 2002년 부터 미국 표준으로 인증받은 암호화 방법 입니다.
국내는 SEED라는 블록 암호 알고리즘이 존재합니다.
우선 이 소스를 이용하기 위해서는 mcrypt 가 필요합니다. php 설치시 포함 하셔야 합니다.
* 소스
* 결과
256-bit encrypted result: FVhzz1Vd7dC3LgUP0+Ln++6w4WX6tE9ljW5nqrszXYs=
256-bit decrypted result: http://yesyo.com한글~
고급 암호 표준(AES, Advanced Encryption Standard)은 2002년 부터 미국 표준으로 인증받은 암호화 방법 입니다.
국내는 SEED라는 블록 암호 알고리즘이 존재합니다.
우선 이 소스를 이용하기 위해서는 mcrypt 가 필요합니다. php 설치시 포함 하셔야 합니다.
* 소스
01 | <?php |
02 | // 기본 32자 |
03 | $key = hex2bin( "12345678901234567890123456789088" ); |
04 | $iv = hex2bin( "12345678901234567890123456789099" ); |
05 | $data = "http://yesyo.com한글~" ; |
06 | $encrypted = encrypt( $key , $iv , $data ); |
07 | printf( "256-bit encrypted result:\n%s\n\n" , $encrypted ); |
08 | echo "<br />" ; |
09 | $decrypted = decrypt( $key , $iv , $encrypted ); |
10 | printf( "256-bit decrypted result:\n%s\n\n" , $decrypted ); |
11 |
12 | function hex2bin( $hexdata ) { |
13 | $bindata = "" ; |
14 | for ( $i =0; $i < strlen ( $hexdata ); $i +=2) { |
15 | $bindata .= chr (hexdec( substr ( $hexdata , $i ,2))); |
16 | } |
17 | return $bindata ; |
18 | } |
19 | function toPkcs7( $value ) { |
20 | if ( is_null ( $value )) $value = "" ; |
21 | $padSize = 16 - ( strlen ( $value ) % 16); |
22 | return $value . str_repeat ( chr ( $padSize ), $padSize ); |
23 | } |
24 | function fromPkcs7( $value ) { |
25 | $valueLen = strlen ( $value ); |
26 | if ( $valueLen % 16 > 0) $value = "" ; |
27 | $padSize = ord( $value { $valueLen - 1}); |
28 | if ( ( $padSize < 1) or ( $padSize > 16) ) $value = "" ; |
29 | // Check padding. |
30 | for ( $i = 0; $i < $padSize ; $i ++) { |
31 | if (ord( $value { $valueLen - $i - 1}) != $padSize ) $value = "" ; |
32 | } |
33 | return substr ( $value , 0, $valueLen - $padSize ); |
34 | } |
35 | function encrypt( $key , $iv , $value ) { |
36 | if ( is_null ( $value )) $value = "" ; |
37 | $value = toPkcs7( $value ); |
38 | $output = mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key , $value , MCRYPT_MODE_CBC, $iv ); |
39 | return base64_encode ( $output ); |
40 | } |
41 | function decrypt( $key , $iv , $value ) { |
42 | if ( is_null ( $value )) $value = "" ; |
43 | $value = base64_decode ( $value ); |
44 | $output = mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key , $value , MCRYPT_MODE_CBC, $iv ); |
45 | return fromPkcs7( $output ); |
46 | } |
47 | ?> |
* 결과
256-bit encrypted result: FVhzz1Vd7dC3LgUP0+Ln++6w4WX6tE9ljW5nqrszXYs=
256-bit decrypted result: http://yesyo.com한글~
|
댓글목록
등록된 댓글이 없습니다.