分割する時にブロックで綺麗に割り切れない場合は、パディングで穴埋めします。
### パディングモード
・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