暗号処理のパディングモード(パディング方式)

分割する時にブロックで綺麗に割り切れない場合は、パディングで穴埋めします。

### パディングモード
・PKCS#5 PKCS#7 : AESと組み合わせることが多い
・Optimal Asymmetric Encryption Padding(OAEP) : RSAと組み合わせることが多い。その場合はRSA-OAEPと呼ばれる

def self.encrypt(data, pass, salt)
	cipher = OpenSSL::Cipher::Cipher.new("AES-256-CBC")
	key_iv = OpenSSL::PKCS5.pbkdf2_hmac_sha1(pass, salt, 1000, cipher.key_len+cipher.iv_len)
	key = key_iv[0, cipher.key_len]
	iv = key_iv[cipher.key_len, cipher.iv_len]
	cipher.encrypt
	cipher.key = key
	cipher.iv = iv
	encryptvalue = cipher.update(data) + cipher.final
	return Base64.b64encode(encryptvalue)
end	

test_214_bytes.txt 214 bytes
test_215_bytes.txt 215 bytes
openssl rsautl -encrypt -oaep -pubin -inkey public-key.pem -in test_214_bytes.txt -out test_214_bytes.enc
openssl rsautl -encrypt -oaep -pubin -inkey public-key.pem -in test_215_bytes.txt -out test_215_bytes.enc