python生成數字證書,python 數字證書登錄

本文目錄一覽:

python安裝根證書有什麼用

受信。python根證書,是CA認證中心與用戶建立信任關係的基礎,用戶的數字證書。必須有一個受信任的根證書,用戶的數字證書才是有效的。

python怎麼生成隨機圖形驗證碼

1.安裝pillow模塊

pip install pillow

2.pillow模塊的基本使用

1.創建圖片

from PIL import Image

#定義使用Image類實例化一個長為400px,寬為400px,基於RGB的(255,255,255)顏色的圖片

img1=Image.new(mode=”RGB”,size=(400,400),color=(255,255,255))

#把生成的圖片保存為”pic.png”格式

with open(“pic.png”,”wb”) as f:

img1.save(f,format=”png”)

#顯示圖片

img1.show()

運行程序,程序會在py文件的同級下生成一個名為”pic.png”的小圖片,圖片長為400px,寬為400px,顏色為白色.

2.創建畫筆

#創建畫筆,用於在圖片上生成內容

draw1=ImageDraw.Draw(img1,mode=”RGB”)

3.在圖片上生成點

#在(100,100)坐標上生成一個紅點,指定的坐標不能超過圖片的尺寸

draw1.point([100,100],pill=”red”)

#在(80,80)坐標上生成一個黑點,指定的坐標不能超過圖片的尺寸

draw1.point([80,80],fill=(0,0,0))

4.在圖片上畫線

#第一個括弧裡面的參數是坐標,前兩個數為開始坐標,後兩個數為結束坐標

#括弧里的第二個參數指定顏色,可以直接指定,也可以用RGB來表示顏色

draw1.line((100,100,100,300),fill=”red”)

draw1.line((100,200,200,100),fill=”blue”)

運行程序,畫筆會在(100,100)到(100,300)坐標之間畫一條紅色的豎線,在(100,200)到(200,100)坐標之間畫一根藍色的斜線

5.在圖片在畫圓

#括弧里的第一個參數是坐標,前兩個數為起始坐標,後兩個為結束坐標

#用這兩個坐標之間的正方形區域生成一個圓,大括弧里的第二個參數為圓的開始角度

#第三個參數為圓的結束角度,0到360表示所畫的是一個完整的圓形,

#也可以指定的數字來生成一段為圓弧,最後一個參數表示顏色,也可以用RGB來表示想要的顏色

draw1.arc((100,100,300,300),0,360,fill=”red”)

draw1.arc((0,0,300,300),0,90,fill=”blue”)

6.在圖片在寫文本

#使用畫筆的text方法在圖片上生成文本

#第一個參數為坐標,第二個參數為所有生成的文本的內容

#第三個參數為文本的顏色

draw1.text([0,0],”python”,”blue”)

7.在圖片在生成指定字體的文本

#先實例化一個字體對象,第一個參數表示字體的路徑,第二個參數表示字體大小

font1=ImageFont.truetype(“One Chance.ttf”,28)

#在圖片上生成字體

#第一個括弧里的參數表示坐標,第二個參數表示寫入的內容

#第三個參數表示顏色,第四個參數表示使用的字體對象

draw1.text([200,200],”linux”,”red”,font=font1)

圖片驗證碼的實例

#導入random模塊

import random

#導入Image,ImageDraw,ImageFont模塊

from PIL import Image,ImageDraw,ImageFont

#定義使用Image類實例化一個長為120px,寬為30px,基於RGB的(255,255,255)顏色的圖片

img1=Image.new(mode=”RGB”,size=(120,30),color=(255,255,255))

#實例化一支畫筆

draw1=ImageDraw.Draw(img1,mode=”RGB”)

#定義要使用的字體

font1=ImageFont.truetype(“One Chance.ttf”,28)

for i in range(5):

#每循環一次,從a到z中隨機生成一個字母或數字

#65到90為字母的ASCII碼,使用chr把生成的ASCII碼轉換成字元

#str把生成的數字轉換成字元串

char1=random.choice([chr(random.randint(65,90)),str(random.randint(0,9))])

#每循環一次重新生成隨機顏色

color1=(random.randint(0,255),random.randint(0,255),random.randint(0,255))

#把生成的字母或數字添加到圖片上

#圖片長度為120px,要生成5個數字或字母則每添加一個,其位置就要向後移動24px

draw1.text([i*24,0],char1,color1,font=font1)

#把生成的圖片保存為”pic.png”格式

with open(“pic.png”,”wb”) as f:

img1.save(f,format=”png”)

「青鋒愛分享」Springboot+Python之RSA加解密方案(RSA深入)二

本篇文章要結合上一節文章一起看。

青鋒愛分享-RSA-Springboot+Python整合

碼雲搜索: 青鋒 會有驚喜哦哦。

通過python生成的公鑰私鑰 格式PKCS1 。

生成pem格式如下:

私鑰頭(—–BEGIN RSA PRIVATE KEY—–)

私鑰尾(—–END RSA PRIVATE KEY—–)

我需要將此私鑰轉換為DER編碼的PKCS8未加密格式,以便與java伺服器代碼一起使用,特別是PKCS8EncodedKeySpec。我已經試過使用rsa和pkcs8命令的OpenSSL,如果有更簡單的辦法,沒有特別需要使用openssl。

RSA私鑰格式PKCS1和PKCS8相互轉換

RSA公鑰格式PKCS1和PKCS8相互轉換

以下轉換基於openssl命令的操作;

執行:openssl genrsa -out private.pem 1024

—–BEGIN RSA PRIVATE KEY—–

MIICXQIBAAKBgQDlLm5+Kosybacfp8hzjn1fl2wT7Au2lm5SEtz6r+/wwSfq5KfY

H8q1AO/C92IwEpplNbrqYmOXQu6P07mg0lQOCvE5sdtmAvD2ex3wCef8lWmgdh5q

Uo4OMcmoSz3IAp/7/FnMag1IelSfdronPBDxazp6NUmQZITsYK6CsEl/ewIDAQAB

AoGBAJkMdvF+i9Kzc6YqMC0rfQJ3Zs+vFOtsbmQVAMnQ8JWBCJ1O8d/c60wRQgyb

lFCyO7VXOmoIJqX/Jr2aER8bFtG+Yxy6jsMu3ynwMwbhcVmCWCmZoWuE5pZdEJk6

lOdOay7TkE45X/Wc7K9iZs2uuB7sylIvK/HVxxit6FGePa4RAkEA9e+VoAbxBv78

HyxRcStW+Kc3lmE4zYBGAb2IYx48UEN34nP5rI8Tusqsy7CZ3rvSMi1CpVlj2eQK

FU8FzVFyjwJBAO6PU9q7il8NtecdvYBkDErlCawSeCdk9s79helT0Mrg9cWaVWFO

n0UxgT55MPXWGdMRXUUOCNnMilaw/p7dKlUCQDpjGeu3GivmB2dDN0ad2nUIBftu

s3SeWoB5RdL6T6liiyi5DfJ4uV9kVKe7Epy9jIabFjJ5SWpmaDps21zGVGMCQQCB

HvK0IW3zpOgf/+jh5UUCBJYHnLeMGwm7X11rvQH1zW05Vx9/W565ROI/fjkR1qCD

rZJeHgqMWDlIUuR9+BdBAkAI8+JWgWLdWceXX9Puu4KNmGukx4GZw2n53vMKp0Fu

puQxMonRWTN+kA76cq8QIj8xuEBkdxy1NFRMEkGu675m

—–END RSA PRIVATE KEY—–

執行:openssl pkcs8 -topk8 -inform PEM -in private.pem -outform pem -nocrypt -out pkcs8.pem

—–BEGIN PRIVATE KEY—–

MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBAOUubn4qizJtpx+n

yHOOfV+XbBPsC7aWblIS3Pqv7/DBJ+rkp9gfyrUA78L3YjASmmU1uupiY5dC7o/T

uaDSVA4K8Tmx22YC8PZ7HfAJ5/yVaaB2HmpSjg4xyahLPcgCn/v8WcxqDUh6VJ92

uic8EPFrOno1SZBkhOxgroKwSX97AgMBAAECgYEAmQx28X6L0rNzpiowLSt9Andm

z68U62xuZBUAydDwlYEInU7x39zrTBFCDJuUULI7tVc6aggmpf8mvZoRHxsW0b5j

HLqOwy7fKfAzBuFxWYJYKZmha4Tmll0QmTqU505rLtOQTjlf9Zzsr2Jmza64HuzK

Ui8r8dXHGK3oUZ49rhECQQD175WgBvEG/vwfLFFxK1b4pzeWYTjNgEYBvYhjHjxQ

Q3fic/msjxO6yqzLsJneu9IyLUKlWWPZ5AoVTwXNUXKPAkEA7o9T2ruKXw215x29

gGQMSuUJrBJ4J2T2zv2F6VPQyuD1xZpVYU6fRTGBPnkw9dYZ0xFdRQ4I2cyKVrD+

nt0qVQJAOmMZ67caK+YHZ0M3Rp3adQgF+26zdJ5agHlF0vpPqWKLKLkN8ni5X2RU

p7sSnL2MhpsWMnlJamZoOmzbXMZUYwJBAIEe8rQhbfOk6B//6OHlRQIElgect4wb

CbtfXWu9AfXNbTlXH39bnrlE4j9+ORHWoIOtkl4eCoxYOUhS5H34F0ECQAjz4laB

Yt1Zx5df0+67go2Ya6THgZnDafne8wqnQW6m5DEyidFZM36QDvpyrxAiPzG4QGR3

HLU0VEwSQa7rvmY=

—–END PRIVATE KEY—–

執行:openssl rsa -in pkcs8.pem -out pkcs1.pem

—–BEGIN RSA PRIVATE KEY—–

MIICXQIBAAKBgQDlLm5+Kosybacfp8hzjn1fl2wT7Au2lm5SEtz6r+/wwSfq5KfY

H8q1AO/C92IwEpplNbrqYmOXQu6P07mg0lQOCvE5sdtmAvD2ex3wCef8lWmgdh5q

Uo4OMcmoSz3IAp/7/FnMag1IelSfdronPBDxazp6NUmQZITsYK6CsEl/ewIDAQAB

AoGBAJkMdvF+i9Kzc6YqMC0rfQJ3Zs+vFOtsbmQVAMnQ8JWBCJ1O8d/c60wRQgyb

lFCyO7VXOmoIJqX/Jr2aER8bFtG+Yxy6jsMu3ynwMwbhcVmCWCmZoWuE5pZdEJk6

lOdOay7TkE45X/Wc7K9iZs2uuB7sylIvK/HVxxit6FGePa4RAkEA9e+VoAbxBv78

HyxRcStW+Kc3lmE4zYBGAb2IYx48UEN34nP5rI8Tusqsy7CZ3rvSMi1CpVlj2eQK

FU8FzVFyjwJBAO6PU9q7il8NtecdvYBkDErlCawSeCdk9s79helT0Mrg9cWaVWFO

n0UxgT55MPXWGdMRXUUOCNnMilaw/p7dKlUCQDpjGeu3GivmB2dDN0ad2nUIBftu

s3SeWoB5RdL6T6liiyi5DfJ4uV9kVKe7Epy9jIabFjJ5SWpmaDps21zGVGMCQQCB

HvK0IW3zpOgf/+jh5UUCBJYHnLeMGwm7X11rvQH1zW05Vx9/W565ROI/fjkR1qCD

rZJeHgqMWDlIUuR9+BdBAkAI8+JWgWLdWceXX9Puu4KNmGukx4GZw2n53vMKp0Fu

puQxMonRWTN+kA76cq8QIj8xuEBkdxy1NFRMEkGu675m

—–END RSA PRIVATE KEY—–

可以看出結果和1是一致的;

執行:openssl rsa -in private.pem -pubout -out public.pem

—–BEGIN PUBLIC KEY—–

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDlLm5+Kosybacfp8hzjn1fl2wT

7Au2lm5SEtz6r+/wwSfq5KfYH8q1AO/C92IwEpplNbrqYmOXQu6P07mg0lQOCvE5

sdtmAvD2ex3wCef8lWmgdh5qUo4OMcmoSz3IAp/7/FnMag1IelSfdronPBDxazp6

NUmQZITsYK6CsEl/ewIDAQAB

—–END PUBLIC KEY—–

5. 從pkcs8私鑰中生成pkcs8公鑰

執行:openssl rsa -in pkcs8.pem -pubout -out public_pkcs8.pem

—–BEGIN PUBLIC KEY—–

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDlLm5+Kosybacfp8hzjn1fl2wT

7Au2lm5SEtz6r+/wwSfq5KfYH8q1AO/C92IwEpplNbrqYmOXQu6P07mg0lQOCvE5

sdtmAvD2ex3wCef8lWmgdh5qUo4OMcmoSz3IAp/7/FnMag1IelSfdronPBDxazp6

NUmQZITsYK6CsEl/ewIDAQAB

—–END PUBLIC KEY—–

可以看出結果和4是一樣的;

執行:openssl rsa -pubin -in public.pem -RSAPublicKey_out

—–BEGIN RSA PUBLIC KEY—–

MIGJAoGBAOUubn4qizJtpx+nyHOOfV+XbBPsC7aWblIS3Pqv7/DBJ+rkp9gfyrUA

78L3YjASmmU1uupiY5dC7o/TuaDSVA4K8Tmx22YC8PZ7HfAJ5/yVaaB2HmpSjg4x

yahLPcgCn/v8WcxqDUh6VJ92uic8EPFrOno1SZBkhOxgroKwSX97AgMBAAE=

—–END RSA PUBLIC KEY—–

openssl rsa -pubin -in public_pkcs8.pem -RSAPublicKey_out

—–BEGIN RSA PUBLIC KEY—–

MIGJAoGBAOUubn4qizJtpx+nyHOOfV+XbBPsC7aWblIS3Pqv7/DBJ+rkp9gfyrUA

78L3YjASmmU1uupiY5dC7o/TuaDSVA4K8Tmx22YC8PZ7HfAJ5/yVaaB2HmpSjg4x

yahLPcgCn/v8WcxqDUh6VJ92uic8EPFrOno1SZBkhOxgroKwSX97AgMBAAE=

—–END RSA PUBLIC KEY—–

可以看出轉換的結果是一致的;

執行:openssl rsa -RSAPublicKey_in -in pub_pkcs1.pem -pubout

—–BEGIN PUBLIC KEY—–

MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDlLm5+Kosybacfp8hzjn1fl2wT

7Au2lm5SEtz6r+/wwSfq5KfYH8q1AO/C92IwEpplNbrqYmOXQu6P07mg0lQOCvE5

sdtmAvD2ex3wCef8lWmgdh5qUo4OMcmoSz3IAp/7/FnMag1IelSfdronPBDxazp6

NUmQZITsYK6CsEl/ewIDAQAB

—–END PUBLIC KEY—–

可以看到和上面4,5的結果是一致的;

最後一點:

iOS上用的是pkcs8格式的公鑰

openssl用的是pkcs1格式的公鑰

知道私鑰以後是可以導出公鑰的,所以私鑰一定要保證安全

知道公鑰不可以導出私鑰

解決方案針對是window電腦。

配置:SystemRoot/ System32 環境變數。

1、郵件我的電腦-選擇下【屬性】。

2、選擇高級系統設置

3、選擇【高級】-【環境變數】

4、雙擊打開path,進行編輯

5、 接著我們在這名字後面加【;System32】就可以了。

安裝 Win64 OpenSSL,地址:

下載後根據提示一步一步安裝,安裝完成後:

雙擊start.bat 啟動

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/181676.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-23 06:44
下一篇 2024-11-23 06:44

相關推薦

  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • 蝴蝶優化演算法Python版

    蝴蝶優化演算法是一種基於仿生學的優化演算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化演算法Python版…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智慧、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29

發表回復

登錄後才能評論