我正在使用SJCL,它适用于小 ASCII 字符串。
但是当我尝试解码这段 JSON(HTML 页面加密的结果)时,出现"this is not JSON!"错误。
JSON 是由 SJCL 生成的,虽然我确实使用 LZW 和 base64 对其进行了编码和解码,但对于具有相同工作流程的小字符串,我没有收到此错误。
我跟踪了解码函数的错误消息来源。我认为正则表达式失败了,但我不明白为什么,因为这对我来说似乎是一个完美的 JSON 字符串。
但是,我可能是错误的,就好像我对它进行了 JavaScript 评估一样,它会因语法错误而失败。但是,如果我将它转储到一个文件中,Python 就可以很好地解析它。
我在使用 SJCL 和 javascript 加密文件时遇到问题。
我设法使用 FileReader API 和 readAsBinaryString 加密文本文件。当涉及到加密 pdf/png/.. 时,可能由于编码而出现问题。
我发现我可以使用完美适合这项任务的 readAsArrayBuffer,所以我基本上读取文件并创建新的类型化数组,new Uint8Array()但我不知道我应该如何加密这样的数据。
这是我的代码:
/** Convert from an array of bytes to a bitArray. */
function toBitArrayCodec(bytes) {
var out = [], i, tmp=0;
for (i=0; i<bytes.length; i++) {
tmp = tmp << 8 | bytes[i];
if ((i&3) === 3) {
out.push(tmp);
tmp = 0;
}
}
if (i&3) {
out.push(sjcl.bitArray.partial(8*(i&3), tmp));
}
return out;
}
/** Convert from a bitArray to an array of …Run Code Online (Sandbox Code Playgroud) 这段代码在 React Native 中失败,但在 Node 中没有:
try {
return require('module-does-not-exist');
}catch (e) {
return null;
}
Run Code Online (Sandbox Code Playgroud)
谁能告诉我为什么?
我正在尝试在我的 React Native 应用程序中使用斯坦福 JavaScript 加密库,但它在导入时失败,因为它使用此模式来选择使用crypto内置节点。(源代码)
似乎其他人之前也遇到过这个问题:https : //github.com/davidbau/seedrandom/pull/44
我\xe2\x80\x99d喜欢在Python 3中解密AES加密的字符串(CCM模式)。
\n以下 JavaScript 代码使用sjcl库的 JavaScript 代码可以正常工作:
\nconst sjcl = require(\'sjcl\');\n\nconst key = "ef530e1d82c154170296467bfe40cdb47b9ad77e685bbf8336b145dfa0e85640";\nconst keyArray = sjcl.codec.hex.toBits(key);\nconst iv = sjcl.codec.base64.fromBits(sjcl.codec.hex.toBits(key.substr(0,16))); \nconst params = {\n "iv": iv,\n "v": 1,\n "iter": 1000,\n "ks": 256,\n "ts": 128,\n "mode": "ccm",\n "adata": "",\n "cipher": "aes",\n "salt": "",\n};\n\nfunction encrypt(data) {\n const ct = JSON.parse(sjcl.encrypt(keyArray, data, params)).ct;\n return sjcl.codec.hex.fromBits(sjcl.codec.base64.toBits(ct));\n}\n\nfunction decrypt(data) {\n const ct = sjcl.codec.base64.fromBits(sjcl.codec.hex.toBits(data));\n const paramsWithCt = JSON.stringify({ ...params, ...{ "ct": ct } });\n return sjcl.decrypt(keyArray, paramsWithCt);\n}\n\nlet ct = encrypt("my secret string");\nconsole.log("Cipher …Run Code Online (Sandbox Code Playgroud) 我正在使用SJCL库来加密/解密消息.我的问题是我不知道哪个使用AES或SHA256
这是我的代码:
var h = sjcl.codec.hex, count = 2048 ;
salt = h.fromBits(sjcl.random.randomWords('10','0'));
var key = h.fromBits( sjcl.misc.pbkdf2(somePassword, h.toBits(salt), count) ) ;
Run Code Online (Sandbox Code Playgroud)
接下来我可以加密/解密
var encMessage = sjcl.encrypt(key, message) ;
sjcl.decrypt(key, encMessage) ;
Run Code Online (Sandbox Code Playgroud)
AES或SHA256还是其他什么?
在我的应用程序中,我想使用"斯坦福Javascript加密库",它有一个打字,我也看到https://github.com/Evgenus/sjcl-typescript-definitions.
我不明白我如何在我的项目中使用它.我如何sjcl.encrypt("password", "data")在我的项目中使用该命令
.
我使用角4,角度cli beta 2
我跑了 npm install --save-dev @types/sjcl
tsconfig.app.json
{
"compilerOptions": {
"outDir": "../out-tsc/app",
"module": "es2015",
"baseUrl": "",
"types": [ "sjcl" ]
},
"exclude": [
"test.ts",
"**/*.spec.ts"
],
"extends": "../tsconfig.json"
}
Run Code Online (Sandbox Code Playgroud) sjcl ×6
encryption ×3
javascript ×3
aes ×2
angular ×1
commonjs ×1
encoding ×1
json ×1
python ×1
react-native ×1
sha256 ×1
typed-arrays ×1