jeroen / openssl

OpenSSL bindings for R
Other
63 stars 20 forks source link

error when convert rawToChar after using aes_cbc #55

Closed huyhoangk50 closed 6 years ago

huyhoangk50 commented 6 years ago

Hi every one,

I have an issue when using aes_cbc to encrypt long string. After use this function. I cannot convert it to string. It return err: "Error in rawToChar(encryptedData) : embedded nul in string:" sometimes, it doesn't return error. but when I decrypte the data it is not correct. Here is my example. Please tell me how can I solve this problem. Thank you.

passphrase <- charToRaw("apapjdwpfjahwnsfsoh") key <- sha256(passphrase) value = "eyJhY2NvdW50Ijp7IkZpcnN0TmFtZSI6WyJuZ3V5ZW4iXSwiTGFzdE5hbWUiOlsiaHV5IGhvYW5nIl0sIkVtYWlsIjpbImh1eWhvYW5nazNAZ21haWwuY29tIl0sIklEIjpbMjIxNV0sIlNlc3Npb25JRCI6WzU2NzZdLCJUb2tlbiI6WyIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiXSwiSXNFbWFpbHZlcmlmaWVkIjpbdHJ1ZV0sIklDT1R5cGUiOnt9fX0="

encryptedData <- aes_cbc_encrypt(charToRaw(value ), key)

stringEncryptedData = rawToChar(encryptedData) //error is here // I need to convert to string to store the value in rresis temp = charToRaw(stringEncryptedData) decryptedData = aes_cbc_decrypt(temp, key = key) rawToChar(temp2) //sometimes it returns "n\006xòQ<;+ÖANû?IkZpcnN0TmFtZSI6WyJuZ3V5ZW4iXSwiTGFzdE5hbWUiOlsiaHV5IGhvYW5nIl0sIkVtYWlsIjpbImh1eWhvYW5nazNAZ21haWwuY29tIl0sIklEIjpbMjIxNV0sIlNlc3Npb25JRCI6WzU2NzZdLCJUb2tlbiI6WyIwMDAwMDAwMC0wMDAwLTAwMDAtMDAwMC0wMDAwMDAwMDAwMDAiXSwiSXNFbWFpbHZlcmlmaWVkIjpbdHJ1ZV0sIklDT1R5cGUiOnt9fX0=" that is not true.

jeroen commented 6 years ago

You cannot convert binary data to strings with rawToChar() it may contain nulls. You need to use openssl::base64_encode and openssl::base64_decode for this.