數字簽名演算法 RSA

2021-07-10 09:06:03 字數 1691 閱讀 5008

數字簽名(又稱公鑰數字簽名)是一種類似寫在紙上的普通的物理簽名,但是使用了公鑰加密領域的技術實現,用於鑑別數字資訊的方法。一套數字簽名通常定義兩種互補的運算,乙個用於簽名,另乙個用於驗證,但法條中的電子簽章與數字簽名,代表之意義並不相同,電子簽章用以辨識及確認電子檔案簽署人身份、資格及電子檔案真偽者。而數字簽名則是以數學演算法或其他方式運算對其加密,才形成電子簽章,意即使用數字簽名才創造出電子簽章。 ——————— 摘自維基百科

簽名的好處

簽名可以保證資料完整性、不可抵賴性、鑑權

簽名過程

傳送方a將需要傳送的資料通過自己的私鑰(private key)進行簽名產生摘要,然後將簽名生成的摘要和需要傳送的資料一起傳輸給接收方b,接收方b在接收到資料後通過a的公鑰(public key)來對簽名進行校驗。

rsa簽名演算法演算法

金鑰長度

預設長度

簽名長度

實現方md2withrsa

512~65536(64的整數倍)

1024

與金鑰長度相同

jdkmd5withrsa

sha1withrsa

sha224withrsa

2048

bcsha256withrsa

sha384withrsa

sha512withrsa

ripemd128withrsa

ripemd168withrsa

**實現:

public

class

signaturewithrsa

/*** 獲取公鑰

* */

public

static rsapublickey getpublickey(mapkeymap)

/*** 獲取私鑰

* */

public

static rsaprivatekey getprivatekey(mapkeymap)

/*** 使用私鑰對資料進行簽名

*@throws exception

*@return byte

* */

public

static

byte signaturewithprivatekey(string data, rsaprivatekey rsaprivatekey) throws exception

/*** 使用公鑰對簽名的資料進行校驗

*@throws exception

* */

public

static

boolean

verifywithpublickey(string data, byte signed, rsapublickey rsapublickey) throws exception

public

static

void

main(string args) throws exception

}

輸出的結果:

以上,就是對rsa簽名演算法的簡單介紹,如有錯誤請指出,謝謝!

RSA數字簽名演算法

數字簽名無非就兩個目的 證明這訊息是你發的 證明這訊息內容確實是完整的 也就是沒有經過任何形式的篡改 包括替換 缺少 新增 這種是兩個目的都達到了,還有一些只達到乙個目的 公鑰和私鑰都可以用來加密或解密 只要能保證用a加密,就用b解密就行。至於a是公鑰還是私鑰,其實可以根據不同的用途而定。例如說,如...

rsa數字簽名實現

使用openssl庫進行封裝實現,如下 static int base64 decode char str,int str len,char decode,int decode buffer len static int base64 encode char str,int str len,char...

數字簽名演算法

gost3411,keccak,md2,md4,md5,sha1,ripemd128,ripemd160,ripemd256,ripemd320,sha224,sha256,sha384,sha512,sha3,skein,sm3,tiger,whirlpool rsa演算法實現參見另一篇文章 md...