Crypto Library Truncates the last bytes of ciphertext

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Crypto Library Truncates the last bytes of ciphertext

Shobhit Singh
Hi All,

I am facing a problem with encrypting AES 256 bit CBC in Erlang and then decrypting it in c code. Whereas Encryption/decryption works in Erlang and C but not from one to another.


the same data I Encrypted and decrypted in C and then made a Hex dump. The actual Encrypted data Erlang is senginh is 128 Bytes and the same data Encrypted by C openssl library is 144 bytes. That's normal cipher text are usually long. Here's the output

This is send by Erlang

    Encrypted =  128

a5 ab d0 68 18 61 ad 82 b1 63 32 16 33 b4 70 7b  
24 12 d0 aa fa 83 c3 a2 b6 a2 fd 0e 79 f2 3d 3c 
ca ac 4a 79 df 32 80 ff 86 33 fd 5b c3 ae 5a 5d 
4d 41 01 73 77 40 19 83 2f f5 44 9c a3 91 6f 7d 
8f d0 ff 35 83 dc ae f3 40 78 e5 15 56 6b 8b 94 
a4 27 90 6a e8 40 fc ea 1a d0 8a bb d5 f4 d2 0b 
ae 2f 7e 04 61 b3 c2 55 08 cf 74 8c ec 03 91 d1
5f 6a 24 79 f1 e4 99 78 e2 7d e3 8a 82 b7 d9 27 

This is Output of Openssl (c) library fof the same data.

Encrypted = 144

a5 ab d0 68 18 61 ad 82 b1 63 32 16 33 b4 70 7b  
24 12 d0 aa fa 83 c3 a2 b6 a2 fd 0e 79 f2 3d 3c  
ca ac 4a 79 df 32 80 ff 86 33 fd 5b c3 ae 5a 5d 
4d 41 01 73 77 40 19 83 2f f5 44 9c a3 91 6f 7d 
8f d0 ff 35 83 dc ae f3 40 78 e5 15 56 6b 8b 94 
a4 27 90 6a e8 40 fc ea 1a d0 8a bb d5 f4 d2 0b  
ae 2f 7e 04 61 b3 c2 55 08 cf 74 8c ec 03 91 d1 
5f 6a 24 79 f1 e4 99 78 e2 7d e3 8a 82 b7 d9 27 
f7 01 c0 ed 95 e3 14 e5 d2 62 21 da a9 1d 2a e7  

The last 16 bytes are missing from Erlang. Is there any other API I need to call from Erlang Crypto library.


Erlang Code:

Ivec = "1200000000000000",
Key = "586E36EEE726B37F70A6F7B770764E99",
Data = "encrypt[38ce517c95b011bbfc999f36d09e4feb92d22dd8,38ce517c95b011bbfc999f36d09e4feb92d22222]",
PaddedText = string:left(Data ++ ",",128,$0),
%%Data is "encrypt[38ce517c95b011bbfc999f36d09e4feb92d22dd8,38ce517c95b011bbfc999f36d09e4feb92d22222],0000000000000000000000000000000000000"
EncryptedText = crypto:block_encrypt(aes_cbc256, Key, Ivec, PaddedText),
%%Send to C code

Thanks,
Shobhit


_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Crypto Library Truncates the last bytes of ciphertext

Shobhit Singh
This is already fixed, please ignore. This is fixed on the c side by adding padding equals to 0. Thanks

On Fri, Jun 23, 2017 at 11:14 AM, Shobhit Singh <[hidden email]> wrote:
Hi All,

I am facing a problem with encrypting AES 256 bit CBC in Erlang and then decrypting it in c code. Whereas Encryption/decryption works in Erlang and C but not from one to another.


the same data I Encrypted and decrypted in C and then made a Hex dump. The actual Encrypted data Erlang is senginh is 128 Bytes and the same data Encrypted by C openssl library is 144 bytes. That's normal cipher text are usually long. Here's the output

This is send by Erlang

    Encrypted =  128

a5 ab d0 68 18 61 ad 82 b1 63 32 16 33 b4 70 7b  
24 12 d0 aa fa 83 c3 a2 b6 a2 fd 0e 79 f2 3d 3c 
ca ac 4a 79 df 32 80 ff 86 33 fd 5b c3 ae 5a 5d 
4d 41 01 73 77 40 19 83 2f f5 44 9c a3 91 6f 7d 
8f d0 ff 35 83 dc ae f3 40 78 e5 15 56 6b 8b 94 
a4 27 90 6a e8 40 fc ea 1a d0 8a bb d5 f4 d2 0b 
ae 2f 7e 04 61 b3 c2 55 08 cf 74 8c ec 03 91 d1
5f 6a 24 79 f1 e4 99 78 e2 7d e3 8a 82 b7 d9 27 

This is Output of Openssl (c) library fof the same data.

Encrypted = 144

a5 ab d0 68 18 61 ad 82 b1 63 32 16 33 b4 70 7b  
24 12 d0 aa fa 83 c3 a2 b6 a2 fd 0e 79 f2 3d 3c  
ca ac 4a 79 df 32 80 ff 86 33 fd 5b c3 ae 5a 5d 
4d 41 01 73 77 40 19 83 2f f5 44 9c a3 91 6f 7d 
8f d0 ff 35 83 dc ae f3 40 78 e5 15 56 6b 8b 94 
a4 27 90 6a e8 40 fc ea 1a d0 8a bb d5 f4 d2 0b  
ae 2f 7e 04 61 b3 c2 55 08 cf 74 8c ec 03 91 d1 
5f 6a 24 79 f1 e4 99 78 e2 7d e3 8a 82 b7 d9 27 
f7 01 c0 ed 95 e3 14 e5 d2 62 21 da a9 1d 2a e7  

The last 16 bytes are missing from Erlang. Is there any other API I need to call from Erlang Crypto library.


Erlang Code:

Ivec = "1200000000000000",
Key = "586E36EEE726B37F70A6F7B770764E99",
Data = "encrypt[38ce517c95b011bbfc999f36d09e4feb92d22dd8,38ce517c95b011bbfc999f36d09e4feb92d22222]",
PaddedText = string:left(Data ++ ",",128,$0),
%%Data is "encrypt[38ce517c95b011bbfc999f36d09e4feb92d22dd8,38ce517c95b011bbfc999f36d09e4feb92d22222],0000000000000000000000000000000000000"
EncryptedText = crypto:block_encrypt(aes_cbc256, Key, Ivec, PaddedText),
%%Send to C code

Thanks,
Shobhit



_______________________________________________
erlang-questions mailing list
[hidden email]
http://erlang.org/mailman/listinfo/erlang-questions
Loading...