前端進行SHA256withRSA加密及其解密

2021-10-16 13:02:53 字數 1359 閱讀 9867

利用sha256withrsa進行加密

1.npm install jsrsasign

2.加密

// 引入jsrsasign

import jsrsasign from 'jsrsasign'

// new乙個rsa物件

let rsa = new jsrsasign.rsakey()

// sha256withrsa私鑰

const k = `-----begin private key-----

-----end private key-----`

// 將私鑰 轉成16進製制

rsa = jsrsasign.keyutil.getkey(k)

// 採用sha256withrsa進行加密

const sig = new jsrsasign.kjur.crypto.signature()

// 演算法初始化

sig.init(rsa)

const newstr = '123456'

// 對123456進行加密

sig.updatestring(newstr)

// 加密後的16進製制轉成base64,這就是簽名了

const sign = jsrsasign.hextob64(sig.sign())

3.sha256withrsa驗籤

let rsa = new jsrsasign.rsakey()

// sha256withrsa公鑰

const k = `-----begin public key-----

公鑰-----end public key-----`

// 將公鑰轉正16進製制

rsa = jsrsasign.keyutil.getkey(k)

// 採用sha256withrsa進行加密

const sig = new jsrsasign.kjur.crypto.signature()

// 初始化sha256withrsa演算法的物件

sig.init(rsa)

const newstr = '123456'

// 將123456進行加密

sig.updatestring(newstr)

// 需要驗證的簽名

const sign = 'btu4wzyxcblrf8j1+o6tekq3zgjxru1ho'

// 將加密後的123456轉成base64後跟sign簽名進行驗證

let b = sig.verify(jsrsasign.b64tohex(sign))

b為true 則表示驗證通過

SHA 256演算法流程

sha 256 輸入訊息 m 輸出訊息 256位 bit hash值 步驟 訊息填充 m的長度 mod 512 r,考慮r r為輸入訊息長度按512bit進行分組後,最後一組的長度 系統給出8個32位暫存器 a,b,c,d,e,f,g,h,其初始值分別取自8個素數 2,3,5,7,11,13,17,...

MD5, SHA256, SHA512雜湊演算法

實現各種字串hash雜湊演算法的類 public class stringhasher return results 將隨機生成的salt新增到字串,然後使用md5演算法對字串進行雜湊。salt的長度與演算法生成的長度相同 待雜湊的字串.salt 用於密碼.hash雜湊後的字串.public str...

SHA 256演算法實現過程

1.定義8個32位常量 h0 0x6a09e667 h1 0xbb67ae85 h2 0x3c6ef372 h3 0xa54ff53a h4 0x510e527f h5 0x9b05688c h6 0x1f83d9ab h7 0x5be0cd192.再定義乙個k的32位整形陣列,陣列大小為64 k ...