@@ -17,28 +17,52 @@ aes-encrypt-decrypt-nodejs.js
1717
1818
1919
20- function importAesKey ( base64 ) {
20+ //:
21+
22+
23+ function generateAesKey ( length = 256 ) {
24+
25+ var bytes = length / 8 ;
26+ var key = crypto . randomBytes ( 32 ) ;
27+ // console.log("Hex Key:", key.toString('hex'));
28+ // console.log("Base64 Key:", key.toString('base64'));
29+ return key ;
30+
31+ } //generateAesKey
32+
2133
22- return Buffer . from ( base64 , 'base64' ) ; // raw 32‑byte key
34+ function importAesKey ( blob ) {
35+
36+ var key = await blob_buffer ( blob ) ;
37+ return key ;
2338
2439 } //importAesKey
2540
2641
27- function aesEncryptNode ( keyBuf , plaintext , iv_bits = 96 ) {
42+ function exportAesKey ( key ) {
43+
44+ var key2 = buffer_blob ( key ) ;
45+ return key2 ;
46+
47+ } //exportAesKey
48+
49+
50+ async function aesEncryptNode ( key , blob , iv_bits = 96 ) {
2851
2952 var bytes = iv_bits / 8 ;
3053 var iv = crypto . randomBytes ( bytes ) ;
54+ key = await blob_buffer ( key ) ;
55+ var buf = await blob_buffer ( blob ) ;
3156
32- var cipher = crypto . createCipheriv ( 'aes-256-gcm' , keyBuf , iv ) ;
57+ var cipher = crypto . createCipheriv ( 'aes-256-gcm' , key , iv ) ;
3358
34- var buf1 = cipher . update ( plaintext , 'utf8' ) ;
59+ var buf1 = cipher . update ( buf ) ;
3560 var buf2 = cipher . final ( ) ;
3661
3762 var encrypted = Buffer . concat ( [ buf1 , buf2 ] ) ;
38-
3963 var tag = cipher . getAuthTag ( ) ;
4064
41- var buf = Buffer . concat ( [ ciphertext , authTag ] ) ;
65+ var buf = Buffer . concat ( [ encrypted , authTag ] ) ;
4266
4367 var blob = iv_buf_blob ( iv , buf ) ;
4468 return blob ;
@@ -47,21 +71,29 @@ aes-encrypt-decrypt-nodejs.js
4771
4872
4973
50- function aesDecryptNode ( keyBuf , encrypted ) {
74+ async function aesDecryptNode ( key , blob , iv_bits = 96 ) {
5175
52- var iv = Buffer . from ( encrypted . iv , 'base64' ) ;
53- var data = Buffer . from ( encrypted . data , 'base64' ) ;
54- var tag = Buffer . from ( encrypted . tag , 'base64' ) ;
76+ var bytes = iv_bits / 8 ;
77+ var taglength = 16 ;
5578
56- var decipher = crypto . createDecipheriv ( 'aes-256-gcm' , keyBuf , iv ) ;
57- decipher . setAuthTag ( tag ) ;
79+ var buf = await blob_buffer ( blob ) ;
80+ var iv = buf . subarray ( 0 , bytes ) ;
81+ buf = buf . subarray ( bytes ) ;
82+ var n = buf . length - taglength ;
83+ var authTag = buf . subarray ( n ) ;
84+ buf = buf . subarray ( 0 , n ) ;
5885
59- var decrypted = Buffer . concat ( [
60- decipher . update ( data ) ,
61- decipher . final ( )
62- ] ) ;
6386
64- return decrypted . toString ( 'utf8' ) ;
87+ var decipher = crypto . createDecipheriv ( 'aes-256-gcm' , key , iv ) ;
88+ decipher . setAuthTag ( authTag ) ;
89+
90+ var buf1 = decipher . update ( buf ) ;
91+ var buf2 = decipher . final ( ) ;
92+
93+ var decrypted = Buffer . concat ( [ buf1 , buf2 ] ) ;
94+ var blob = new Blob ( [ decrypted ] ) ;
95+
96+ return blob ;
6597
6698 } //aesDecryptNode
6799
@@ -83,11 +115,28 @@ aes-encrypt-decrypt-nodejs.js
83115
84116
85117
118+ function buffer_blob ( buf ) {
119+
120+ var blob = new Blob ( [ buf ] ) ;
121+ return blob ;
122+
123+ } //buffer_blob
124+
86125
87126 async function blob_buffer ( ) {
88127
89128 var buf = await blob . arrayBuffer ( ) ;
90129 var buffer = Buffer . from ( buf ) ;
91130 return buffer ;
92131
93- } //blob_buffer
132+ } //blob_buffer
133+
134+
135+
136+
137+
138+
139+
140+
141+
142+
0 commit comments