请问一个 rsa 加密问题

2020-08-13 09:47:30 +08:00
 kangsgo

对方给的为 rsa 512bit 加密,文件如下(密钥只是做演示用,实际上不会用它,谢谢各位关心):

公钥:

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDoDluy+M0FpwQbCPPpYuICWDWOGHpuaSslLN8pegFrrINVGjZ7HnTHqKiP7dtKw+Rwt3jdc5MsNxrnTHKTXMjV4PFhJfmp7cQhq4CgByoS+NQG7hMcSSE2MSA5W0mD4qXOrgQKT6BeETEDRk0PjKA5SLdhQkDuNMMRFffgufsd4QIDAQAB

私钥:

MIIBVAIBADANBgkqhkiG9w0BAQEFAASCAT4wggE6AgEAAkEAmsQGx3MOMHYVJF6VwV6rBcJ_GcfW-U1gtOhxC2iFf6veqqEG9zwtOPAT2I82hOSyRW7CHDg_N0AKFj7-7J_nlQIDAQABAkEAkMYy-Tx914N-f4kjWcIvBbJNp1YzmP5zKogNx3g8-ZHb7PmvLL7MGX-yeaH2WDJbAcisYRBR-QMKSTLK0wxbuQIhAOFxGiEeIynPPlP8hNNhQpkfqQDEdwiPrsReDddz1IqHAiEAr75xho4Z1ivaGq93bvskWA0C8CEXR7x73skh_vv1eAMCIEoHyw3PCLsFDDGmPbPwP19rLyNKYNBV5o0jWaZDqirnAiBOF_BWfFqaww2-Ae6ukEbMIawGjI3NwMHCc9n5dnjThQIgICR7g2y_DLFeacC5Kx99dSDh-d5ZcO-vQmMAMp6TS2A

公钥加密——私钥解密 明文:

{"iccid":"8986112022503532929","nickName":"aaa","userPhone":"17336606861","idCard":"430204199101172111"}

密文:

khls5onpTAZ9ilpcQgg4ACX22BSdFmMW_rSlXQmbrso20jVDpq5S0V8WhmibonkfRun0H3gVIeOnD5DHzcIJCXVKpYAUeNX-om38Lh7vHJAGzpfbx0uKV_nK5Wqe6rocAK72sxpOb4NAAtlep_tKPE8ZDgKSlAs5wJWH3CMpzP4

我用的 php 这样写的:

    public function publicEncrypt($data = '') {
        if (!is_string($data)) {
            return null;
        }
        return openssl_public_encrypt($data, $encrypted, $this->public_key) ? base64_encode($encrypted) : null;
    }

返回的为空,我在在线网站上用 rsa 512bit 貌似也不行,麻烦各位帮我看一下他是怎么加密的,他是用的 java,php 有什么办法没,谢谢

3314 次点击
所在节点    PHP
26 条回复
iyaozhen
2020-08-13 13:47:56 +08:00
就是各个语言细节上不一样。你要是 aes 的我可以给你一个,各大语言都有 demo
rsa 的没弄过
fiypig
2020-08-13 13:49:39 +08:00
rsa 需要分段加解密
chenzheyu
2020-08-13 13:49:43 +08:00
这个我一般都是用 laravel 自带的加密搞定的
Evilk
2020-08-13 15:07:10 +08:00
所以最后,怎么解决的?
kangsgo
2020-08-13 19:37:58 +08:00
@Evilk 直接和对方说做不了,疯狂说抱歉对不起,就没弄了
cbasil
2020-08-14 10:28:42 +08:00
public static function encryptByPublicKey($data, $key)
{
$key = self::get_public_key($key);
if (!$key) return false;
$crypto = '';
$originalData = str_split($data,117);
foreach ($originalData as $chunk) {
openssl_public_encrypt($chunk, $encryptData, $key);
$crypto .= $encryptData;
}
return base64_encode($crypto);
}
贴一个自用的 rsa 公钥加密方法,先将要加密的字段分块,然后加密就可以了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/697859

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX