如何使用加密密钥在iOS下签名?

2024-05-20 23:00:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有用Java创建的密钥。私钥是PKCS#8加密的,在PEM字符串中。在

下面是一个在Python中将私钥与M2Crypto一起使用的示例:

from M2Crypto import EVP, BIO
privpem = "-----BEGIN ENCRYPTED PRIVATE KEY-----\nMIICoTAbBgoqhkiG9w0BDAEDMA0ECFavEvdkv3fEAgEUBIICgAWvHvH6OktLiaaqo9v+X6XEuY3M\nZr465VmZWzP9nsbTqwSKQQjseiD/rWAxK7RS+V+hit5ZxlNRAUbkg0kwl8SRNX3v6q8noJtcB0OY\ndBEuNJDmWHMHh8qcnfRYc9WXPPmWdjQM2AkfZNfNOxHVlOMhancScy6P4h3Flri9VyUE8w2/zZqK\nBAd2w39V7gprCQXnnNenNuvr4p8MjsdBm8jh00o2HJzN0I6u+9s7M3qLXxwxNepptgU6Qt6eKHi6\njpsV/musVaohLhFMFAzQ87FeGvz/W8dyS9BtAKMRSuDu/QdWIJMRNKkPT0Tt1243V3tzXVXLjz0u\nm/FX6kfxL8r+eGtTr6NKTG75TJfooQzN/v08OEbmvYD/mfptmZ7uKezOGxDmgynn1Au7T/OxKFhx\nWZHpb9OFPIU0uiriUeyY9sbDVJ054zQ/Zd5+iaIjX5RsLoB4J+pfr4HuiVIZVj+Ss2rnPsOY3SjM\ntbHIFp/fLr/HODcDA5eYADRGpBIL9//Ejgzd7OqpU0mdajzZHcMTjeXfWB0cc769bFyHb3Ju1zNO\ng4gNN1H1kOMAXMF7p6r25f6v1BRS6bQyyiFz7Hs7h7JBylbBAgQJgZvv9Ea3XTMy+DIPMdepqu9M\nXazmmYJCtdLAfLBybWsfSBU5K6Pm6+Bwt6mPsuvYQBrP3h84BDRlbkntxUgaWmTB4dkmzhMS3gsY\nWmHGb1N+rn7xLoA70a3U/dUlI7lPkWBx9Sz7n8JlH3cM6jJUmUbmbAgHiyQkZ2mf6qo9qlnhOLvl\nFiG6AY+wpu4mzM6a4BiGMNG9D5rnNyD16K+p41LsliI/M5C36PKeMQbwjJKjmlmWDX0=\n-----END ENCRYPTED PRIVATE KEY-----\n"

msg = "This is a message."
privkeybio = BIO.MemoryBuffer(privpem)
privkey = EVP.load_key_bio(privkeybio) #pw: 123456
privkey.sign_init()
privkey.sign_update(msg)
print privkey.sign_final().encode('base64')

下面是如何在Java中使用PEM(去掉页眉和页脚)的示例:

^{pr2}$

如何在iOS中实现这一点?我已经看过加密练习,特别是SecKeyWrapper,但是有很多东西要做,而且超出了我的范围。在

我个人不打算做iOS开发,但我需要一些代码给开发者,至少展示或多或少如何去做。开发人员更多的是一个UI类型,不熟悉加密。(我也不是,但那是另一个故事…)

在我们讨论的时候,如何根据字符串公钥PEM验证签名?我不会把Java和Python的示例放在这里,因为它们非常直接。在


Tags: key字符串示例msgjavaprivatepemencrypted
1条回答
网友
1楼 · 发布于 2024-05-20 23:00:21

上周我也遇到了同样的问题。iOS上的CommonCrypt库对于对称密钥加密非常好,但是处理keyring太麻烦了,无法完成简单的公钥操作。在花了大约半个小时的时间之后,我刚刚加入了OpenSSL。OpenSSL-Xcode让这个设置变得很简单-只需将项目和OpenSSL tarball放入,将目标设置为与libssl链接,就可以开始了。在

OpenSSL代码看起来与M2Crypto代码几乎相同。在

相关问题 更多 >