Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript和PostgreSQL之间的加密/解密_Javascript_Postgresql_Encryption - Fatal编程技术网

Javascript和PostgreSQL之间的加密/解密

Javascript和PostgreSQL之间的加密/解密,javascript,postgresql,encryption,Javascript,Postgresql,Encryption,我正在尝试在javascript和postgresql之间进行加密/解密 我用这个: 加密文本的算法,然后在PostgreSQL中使用PGCRYPTO.decrypt_iv对文本进行解密 从上面返回的加密字符串:“fc9a03cbc8a57d4061570575f197c29c:a319a4bf354516f392ba96a895478af6” 我必须去掉冒号才能取出一些东西…所以这个: select decrypt_iv(decode('fc9a03cbc8a57d4061570575f

我正在尝试在javascript和postgresql之间进行加密/解密

我用这个: 加密文本的算法,然后在PostgreSQL中使用PGCRYPTO.decrypt_iv对文本进行解密

从上面返回的加密字符串:“fc9a03cbc8a57d4061570575f197c29c:a319a4bf354516f392ba96a895478af6”

我必须去掉冒号才能取出一些东西…所以这个:

   select decrypt_iv(decode('fc9a03cbc8a57d4061570575f197c29ca319a4bf354516f392ba96a895478af6','hex')::bytea, 'sKCx49VgtHZ59bJOTLcU0Gr06ogUnDJi'::bytea, 
'null'::bytea, 'aes-cbc/pad:pkcs');
给我这个:这是物理的

粗体文本是原始字符串

键后的参数,第三个参数,可以是任何字符串。这只是改变了输出的第一部分,垃圾部分

在decrypt_iv中,我尝试在用于加密的javascript中使用加密算法名称,但这毫无用处


我看不出我在这里遗漏了什么。

简而言之。在Javascript中,使用CryptoJS库并执行以下操作:

import CryptoJS from 'crypto-js';

const key = CryptoJS.enc.Hex.parse('12345678901234567890123456789012');
var iv = CryptoJS.enc.Hex.parse('12341234123412341234123412341234');

function encrypt(text) {
    let encrypted = CryptoJS.AES.encrypt(text, key, { iv });
    return encrypted.ciphertext.toString(CryptoJS.enc.Base64);
}

const text = JSON.stringify({ a: 1, b: 2, c: [{}, {}] });

const encrypted = encrypt(text) // --> BDg4dXSvNbWAOeZY/8XQpr6fQMZqnnhQwv8REep4LvQ=
在Postgres中,转到:

选择convert\u from(
extensions.decrypt_iv(
解码('BDg4dXSvNbWAOeZY/8XQpr6fQMZqnnhQwv8REep4LvQ=','base64')::bytea,--加密文本
解码('123456789012134567890123456789012','hex')::bytea,-key
解码('12341234112341234112341234412341234','hex')::bytea,--iv
“aes”
),
“utf8”
)-->{“a”:1,“b”:2,“c”:[{},{}]}
我看到它在某处提到,为了增加安全性,应该在javascript中使用pgp,在Postgres中使用pgp_sym_decrypt。如果我有更多的时间,我会更新这个答案