国产成人毛片视频|星空传媒久草视频|欧美激情草久视频|久久久久女女|久操超碰在线播放|亚洲强奸一区二区|五月天丁香社区在线|色婷婷成人丁香网|午夜欧美6666|纯肉无码91视频

rsa加密過程和解密過程 python公鑰解密原理?

python公鑰解密原理?你好,你這個(gè)非對(duì)稱加密算法,用公鑰加密,然后用私鑰解密。目前多采用Rsa和橢圓加密算法。目前Rsa算法多用于爬蟲。下面是python的rsa加密代碼,可以參考一下。從將PKC

python公鑰解密原理?

你好,你這個(gè)非對(duì)稱加密算法,用公鑰加密,然后用私鑰解密。目前多采用Rsa和橢圓加密算法。目前Rsa算法多用于爬蟲。下面是python的rsa加密代碼,可以參考一下。

從將PKCS1_v1_5作為密碼_pkcs1_v1_5導(dǎo)入

#rsa加密,加密結(jié)果通常是base64編碼。

def encrypt(公鑰,m:

Cipher Cipher _ pkcs1 _ v1 _(public _ key)

cipher _ text base64 . b 64 encode(cipher . encrypt(m

Python如何玩轉(zhuǎn)加密?

1、生成公鑰和私鑰對(duì)

使用openssl工具生成RSA公鑰和私鑰對(duì)。

1.下載openssl工具。下載地址

2.打開openssl文件夾下的bin文件夾,執(zhí)行openssl.exe文件;

3.生成RSA私鑰命令:

這里生成的密鑰文件是2048位。

genrsa -out rsa_private_ 2048

4.生成RSA公鑰命令:

注意,公鑰和私鑰是成對(duì)的,所以你生成一個(gè)后,另一個(gè)是基于前一個(gè)的文件名生成的,否則就不是一對(duì)?。?/p>

RSA-in RSA _ private _-pub out-out RSA _ public _

生成的文件應(yīng)該在您的用戶目錄中,或者在openssl的bin文件夾中(有時(shí)它 在這里,有時(shí)它 它不在那里,這真令人困惑。反正兩個(gè)地方都找就行了,肯定是有的)。

5.讓 讓我們?cè)谶@里介紹RSA密鑰文件的規(guī)則。文件名都是。pem為后綴,生成的RSA密鑰可以看做全部。

以-begin RSA private key-開始并以-end RSA private key-結(jié)束的字符串,沒有換行符,這是原始的RSA私鑰。

第二,安裝—pycryptodome,python支持的加密庫(kù)。

我用的是Python版,網(wǎng)上搜了一下。在python3.6之前,大部分版本都是用pycrypto加密的,但是在python3.6之后,因?yàn)闆]有人維護(hù)pycrypto,所以改名為pycryptodome。這個(gè)庫(kù)的強(qiáng)大之處在于,它是pycrypto庫(kù)的擴(kuò)展,使用起來(lái)更加方便。,更靈活~ ~功能桿掉落

安裝pycryptodome

如果你安裝pip,它 這很簡(jiǎn)單。

pip3安裝pycryptodom:

無(wú)鍵

try:

鑰匙(打開(fn)。r:除外

打印(導(dǎo)入rsa密鑰文件時(shí)出錯(cuò),fn,:

r:

r:除外

Print(將字符串密鑰轉(zhuǎn)換為rsa格式密鑰時(shí)出錯(cuò),skey,err)

返回ret

加密

從進(jìn)口PKCS1_OA:

密文b

try:

密碼PKCS1_(rsa_key)

密文cipher.encrypt(數(shù)據(jù))

:除外

打印(RSA加密失敗,,錯(cuò)誤)

返回密文

因?yàn)镽SA在加密過程中只能加密最大長(zhǎng)度的字符串,所以如果你加密的數(shù)據(jù)太長(zhǎng),你需要在加密過程中分段加密。同樣,解密也是分段解密。

1024位證書加密時(shí)最多支持117字節(jié),解密時(shí)最多支持128字節(jié);

2048位證書在加密時(shí)最多支持245字節(jié),在解密時(shí)最多支持256字節(jié)。

加密時(shí)支持的最大字節(jié)數(shù):證書位數(shù)/8 -11(例如:2048位證書,支持的最大加密字節(jié)數(shù):2048/8-11-245)。

其中,11個(gè)字節(jié)為保留字節(jié)。

我上面的密鑰文件是2048位,所以加密塊長(zhǎng)度是245字節(jié)。

4.加密塊

#根據(jù)密鑰長(zhǎng)度計(jì)算塊大小

d:

try:

# RSA只支持有限長(zhǎng)度內(nèi)的數(shù)據(jù)加密解密,需要分區(qū)。

#塊大小block_r:

引發(fā)Runtim:

r:除外

Print(計(jì)算加密和解密數(shù)據(jù)塊大小時(shí)出錯(cuò),rsa_k:

bs獲取塊大小(rsa密鑰)

對(duì)于i in rang:

收益率數(shù)據(jù)[i:i bs]

無(wú)論加密中使用的段的大小如何,RSA都會(huì)對(duì)段進(jìn)行解密,并根據(jù)/8的密鑰長(zhǎng)度對(duì)其進(jìn)行解密。

從進(jìn)口PKCS1_OA:

r:

密碼PKCS1_(rsa_k:除外

打印(RSA解密失敗,,錯(cuò)誤)

返回ret_data

符號(hào)

從導(dǎo)入pkcs1_15

來(lái)自Crypto。哈希導(dǎo)入SHA256

# RSA簽名

d:

簽名

try:

h(數(shù)據(jù))

簽名pkcs1_(rsa_key)。符號(hào)(h)

除了Exc:

打印(RSA簽名失敗,,錯(cuò)誤)

返回簽名

檢查簽名

# RSA簽名驗(yàn)證

定義rsa_sign_v:

try:

h(數(shù)據(jù))

pkcs1_(rsa_k:

ret False

返回ret

加密解密類(我把RSA加密解密封裝成一個(gè)類,方便后續(xù)直接調(diào)用),完整代碼如下:

#-*-coding: utf-8-*-

作為密碼導(dǎo)入

作為符號(hào)導(dǎo)入

導(dǎo)入加密。哈希作為哈希

從導(dǎo)入RSA

從導(dǎo)入PKCS1_v1_5作為PKCS1_v1_5_cipper

從導(dǎo)入PKCS1_v1_5作為PKCS1_v1_5_sign

來(lái)自Crypto。哈希導(dǎo)入SHA1

Rsa:級(jí)

RSA加密和解密簽名類

def __int__(self,ciper_libPKCS1_v1_5_cipper,sign_libPKCS1_v1_5_sign,hash_libSHA1,

pub_fil:

#加密和解密庫(kù)

_lib cip:

_k:

_k:

_k:

_鍵pri_k:

_k:

_key(打開(pri_file)。read())

#塊保留長(zhǎng)度

_reversed_size reversed_size

#根據(jù)密鑰長(zhǎng)度計(jì)算塊大小

def get_block_siz:

try:

# RSA只支持有限長(zhǎng)度內(nèi)的數(shù)據(jù)加密解密,需要分區(qū)。

#塊大小

保留大小反轉(zhuǎn)大小

密鑰大小rsa__in_bits()

if (k:

引發(fā)Runtim:

r:除外

Print(計(jì)算加密和解密數(shù)據(jù)塊大小時(shí)出錯(cuò),rsa_k:

bs _塊_大小(rsa_k:

產(chǎn)量數(shù)據(jù)[i:i bs]

#加密

定義編碼字節(jié)(自身,數(shù)據(jù),k:

文本b

try:

rsa_k:

rsa_k:

cur_t:

文本b

try:

rsa_k:

rsa_k:

如果鍵入(_ lib)_OA:

當(dāng)前文本(日期)

:

Cur_t:除外

打印(RSA解密失敗,數(shù)據(jù),錯(cuò)誤)

返回文本

# RSA簽名

定義符號(hào)_字節(jié)(自身,數(shù)據(jù),k:

簽名

try:

rsa_k:

rsa_k:除外

打印(RSA簽名失敗,,錯(cuò)誤)

返回簽名

# RSA簽名驗(yàn)證

定義簽名_驗(yàn)證(自我,數(shù)據(jù),簽名,k:

try:

rsa_k:

rsa_k:

r:

及格

如果__姓名_ _ __main__:

主()