spo*_*oko 5 java encryption qr-code digital-signature
我正在寻找类似"倒置非对称密码术"的东西,并且遇到了一个很棒的帖子,它实际上涵盖了我需要的东西.
我希望我的应用程序的每个用户都有一个公钥,允许他们解密隐藏在用我的私钥加密的QR码中的消息.我想确保我的系统不会被覆盖我的假QR码欺骗.接受的答案建议使用数字签名,所以我搜索了Java教程,展示了如何使用该功能.
这有点误会了.我认为使用数字签名会有一个简单的情况(让我们称之为Situation A
):
但是,我的理解是数字签名更像是:
我在这儿吗?如果是这样,我如何将我的消息和签名放在QR码中?事情似乎很容易,Situation A
因为我只能使用Base64编码加密的消息,并将结果放在QR码中.然而,看起来我不能不使用像这样的技巧做同样的事情encode message, encode signature, put them in one file, encode it, put the result in the code
.那我该怎么办?
你可以把QR码你想要的任何东西,包括代表签名的文档的Base-64编码的字节.没有读者会知道如何处理它; 你必须写扫描,然后知道将其解码并采取相应的行动定制的应用程序.
根据提到的教程前面看起来签名文档本身是不够的,虽然.
当我问这个问题时,我假设有某种好习惯或类似的东西。由于没有提供,我决定使用我自己的解决方案,有点类似于 DarkSquirrel42 的建议。
我创建了自己的编码器和解码器。事实上,我使用了与我在原来的帖子中描述的完全相同的技巧。
将两个字符串合并为一个字符串,如下所示
base64(message)-base64(signature)
Run Code Online (Sandbox Code Playgroud)Base64() 上面的字符串如下所示:
base64(base64(message)-base64(signature))
Run Code Online (Sandbox Code Playgroud)将编码后的字符串放入二维码中。
message
和部分(这就是3.signature
中存在连字符的原因),然后如果签名正确,则将消息传递给适当的处理程序。