Moh*_*mri 1 javascript api encryption json
我正在使用 API 开发一个项目。现在我正在尝试加密数据,这样就没有人可以编辑它。我想到使用公钥来加密数据,并使用私钥来加密公钥和(加密数据)。但我无法使用 API uri 发送此加密数据,因为它包含“/”字符。
加密 JSON 数据以便无人可以编辑的最佳方法是什么?
这是 Json 的示例:
{
"Name": "HP Laptop",
"Category": "Laptop",
"Price": 300,
"Currency": "OMR",
"details": "core i 5 ",
"productID": 1,
"Quantity": 10
}
Run Code Online (Sandbox Code Playgroud)
对于任何安全协议,最好始终遵守标准。永远不要尝试发明自己的协议。您最终可能弊大于利。如果此数据通过 HTTP 传输,则可以随意使用 SSL (HTTPS) 来防范 MiTM 攻击,例如窃听和篡改。但是,我认为您正在寻找不同的东西。
虽然SSL应确保数据在旅行时不被篡改,但您可能自己执行此操作,例如,有人给您一些数据,而您不确定它是否未被篡改。要免费执行此操作,请利用该数据的数字签名,其中数字签名的私钥由您持有。
像这样的东西:
Sign(json, private) -> signedDocument。Verify(public, signedDocument, json) = True文档是否未被篡改(概率极高)以及False文档是否已被篡改(概率再次极高)。对于有相当技术倾向的人来说,这是关于数字签名的精彩初读: https: //en.wikipedia.org/wiki/Digital_signature
我相信这可能是 JS 入门的好地方: http: //www-cs-students.stanford.edu/~tjw/jsbn/(我希望斯坦福大学在实施 RSA 方面做得不错,但请随意四处寻找更标准的东西..如果这是Java,那么它可能会更容易...也许编写一个CryptoWebServer来支持此操作?)
为了进一步参考,我相信这个库现在在这里维护: https: //github.com/kjur/jsrsasign/wiki/Tutorial-for-Signature-class
我直接从图书馆的教程中获取了一个签名+验证的示例。请注意,这仅解决了签名和验证的问题,您仍然需要生成公钥/私钥对。
签署消息“aaa”(您将在此处使用 .json 有效负载):
// initialize
var sig = new KJUR.crypto.Signature({"alg": "SHA1withRSA"});
// initialize for signature generation
sig.init(rsaPrivateKey); // rsaPrivateKey of RSAKey object
// update data
sig.updateString('aaa')
// calculate signature
var sigValueHex = sig.sign()
Run Code Online (Sandbox Code Playgroud)
以下是签名验证的示例:
// initialize
var sig = new KJUR.crypto.Signature({"alg": "SHA1withRSA"});
// initialize for signature validation
sig.init("-----BEGIN CERTIFICATE-----(snip)"); // signer's certificate
// update data
sig.updateString('aaa')
// verify signature
var isValid = sig.verify(sigValueHex)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13361 次 |
| 最近记录: |