日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

关于js私钥加密公钥解密的问题

發(fā)布時(shí)間:2025/7/14 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于js私钥加密公钥解密的问题 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

博客荒廢很久了,最近遇到一個(gè)問題,看網(wǎng)上的說明比較少,所以寫下來給大家一個(gè)參考

一般來說rsa算法都是使用公鑰加密,私鑰解密,或者私鑰簽名,公鑰驗(yàn)簽。但總有特別的時(shí)候會(huì)想要用私鑰加密,公鑰解密,但是js里面的框架沒找到直接提供這種方式的。于是,只能自己來解決一下這個(gè)問題,我選擇的是JSEncrypt這個(gè)框架(主要是寫的比較簡(jiǎn)單好看懂)。一般使用rsa算法都是使用的ECB模式和pkcs1padding填充算法,因此,如果使用了其他算法的本文章不適用。

其實(shí)解決方式很簡(jiǎn)單,公鑰加密就是用公鑰對(duì)原文進(jìn)行運(yùn)算,那私鑰其實(shí)就是用私鑰對(duì)原文進(jìn)行運(yùn)算,解密也是反過來就行。但是JSEncrypt這個(gè)框架,將密鑰對(duì)換之后,用私鑰加密得到的密文自己能解開,放到j(luò)ava里就無法解開,原因在于:JSEncrypt直接將原文進(jìn)行運(yùn)算,而java里是將原文進(jìn)行編碼轉(zhuǎn)換之后才進(jìn)行運(yùn)算,因此,只要修改JSEncrypt,將原文進(jìn)行轉(zhuǎn)換一次編碼就可以和java兼容

?

將JSEncrypt中加密的方法貼出來說明一下,encrypt是原本的公鑰加密的方法,encryptp是我加的私鑰加密的方法(起名比較隨意,見諒)。只要將填充部分和密鑰運(yùn)算修改即可。

?

因?yàn)閞sa是分塊加密的,所以對(duì)于1024位的公鑰加密來說,輸入的明文塊小于117位時(shí),在明文塊前添加一位的0x02字節(jié)(代表公鑰加密)然后后面的52位為隨機(jī)的字節(jié),在補(bǔ)位的最后一位,{即52(117-64-1),從零開始的},添加一位的字節(jié)0x00,在補(bǔ)位的后面添加實(shí)際的明文塊。而對(duì)于1024位的私鑰加密,如果輸入的明文塊小于117位,比如輸入的明文塊長(zhǎng)度為64位,那么對(duì)這個(gè)明文塊進(jìn)行補(bǔ)位,在明文塊千添加一位的0x01字節(jié)(代表私鑰加密),然后在后面的52位為字節(jié)0xff,在最后一位{即52(117-64-1),從零開始),添加一位的字節(jié)0x00,在補(bǔ)位的后面添加時(shí)間的明文塊。

正是由于公鑰加密時(shí)填充的字節(jié)是隨機(jī)的,所以每次加密出來的密文都是不同的,但是私鑰加密時(shí)填充的字節(jié)是固定的,所以密文是相同的。也可以通過填充隨機(jī)字節(jié)使私鑰加密變?yōu)殡S機(jī)密文(沒有意義,公鑰是公開的,這種方式與java不兼容)。

接下來是填充的方法部分,因此要兼容java,所以使用asciitohex方法來對(duì)原文進(jìn)行編碼轉(zhuǎn)換,之后按照填充算法來填充明文。因?yàn)槲沂怯胊scii碼轉(zhuǎn)換的,所以不支持中文,需要支持中文的朋友自行修改編碼轉(zhuǎn)換部分即可。

?

?

?

?結(jié)尾,因?yàn)槲冶容^懶所以只解決了一部分問題,還有其他問題未解決,比如不支持中文,還有沒做循環(huán)加密因此只能加密一個(gè)塊長(zhǎng)度以下的密文,需要的朋友自行修改一下吧

源代碼在csdn上,可以下載,麻煩施舍我一點(diǎn)積分,窮人沒積分下資源啊。如果實(shí)在沒積分可以聯(lián)系我

下載地址:https://download.csdn.net/download/wsss_fan/11736982

?

后記:

其實(shí)JSEncrypt里加密時(shí)有做編碼轉(zhuǎn)換,把標(biāo)紅的這段復(fù)制出來做一個(gè)方法就可以了。

?

轉(zhuǎn)載于:https://www.cnblogs.com/wsss/p/11516318.html

總結(jié)

以上是生活随笔為你收集整理的关于js私钥加密公钥解密的问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。