Y's note

Web技術・プロダクトマネジメント・そして経営について

本ブログの更新を停止しており、今後は下記Noteに記載していきます。
https://note.com/yutakikuchi/

AES暗号のまとめ

AESとは

PHPでAES(RIJNDAEL)

<?php

//暗号化方式をRIJNDAELの256bitブロック長、暗号化方式をCBC
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_CBC);  

//Initial Vectorの大きさ
echo "iv size:" . $iv_size . "\n";

//Initial Vector生成
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
echo "iv value:" . base64_encode( $iv ) . "\n";

//共通鍵
$key = "secret key!!!!!!";

//暗号化したい平文
$text = "This is plain text";
echo "PlainText Value:" . $text . "\n";

//暗号化方式をRIJNDAELの256bitブロック長、暗号化方式をCBC
$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_CBC, $iv);
echo "Crypt Value:" . base64_encode( $crypttext ) . "\n";

//復号化
$decrypttext = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $crypttext, MCRYPT_MODE_CBC, $iv);
echo "DeCrypt Value:" . $decrypttext . "\n";
  • 実行結果
iv size:32
iv value:1YI3/hshZifNIj0EmiS2ounygl2geY1Gw1Uy6MvHZNY=
PlainText Value:This is plain text
Crypt Value:VWrSk11wHxrbz7TRcgvfE/Zpe2Ru3qE9grwM4mEFwfQ=
DeCrypt Value:This is plain text

PythonでAES(RIJNDAEL)

$ fetch "http://jclement.ca/software/pyrijndael/pyrijndael-v1_4.tar.gz"
$ tar -xzf pyrijndael-v1_4.tar.gz
  • 暗号化/複合化のサンプルプログラム
#! /usr/bin/env python
# -*- coding:utf-8 -*-

import pyRijndael
import base64

#共通鍵
key = "secret key!!!!!!"
#暗号化する文章
text = "This is plain text"
print "PlainText Value:", text
#Rijindaelで暗号化
crypttext = pyRijndael.EncryptData(key,text)
print "Crypt value:", base64.b64encode(crypttext)

#復号化
decrypttext = pyRijndael.DecryptData(key,crypttext)
print "DecryptText Value:", decrypttext
  • 実行結果
PlainText Value: This is plain text
Crypt value: PsgMDBt+jtPN+F9q1rM/Lyl6CxBltIAq+bDr5eS2gbg=
DecryptText Value: This is plain text