func ReadBytes(path string) ([]byte, error) {
喀左ssl適用于網站、小程序/APP、API接口等需要進行數據傳輸應用場景,ssl證書未來市場廣闊!成為成都創新互聯公司的ssl證書銷售渠道,可以享受市場價格4-6折優惠!如果有意向歡迎電話聯系或者加微信:13518219792(備注:SSL證書合作)期待與您的合作!
f, err := os.Open(path)
if err != nil {
return nil, err
}
defer f.Close()
return ioutil.ReadAll(f)
}
func RSAEncrypt(data []byte) ([]byte, error) {
publicKey, err := ReadBytes(`public.pem`)
if err != nil {
return nil, err
}
block, _ := pem.Decode(publicKey)
if block == nil {
return nil, errors.New("public key error")
}
pubInterface, err := x509.ParsePKIXPublicKey(block.Bytes)
if err != nil {
return nil, err
}
return rsa.EncryptPKCS1v15(rand.Reader, pubInterface.(*rsa.PublicKey), data)
}
func RSADecrypt(data []byte) ([]byte, error) {
privateKey, err := ReadBytes(`private.pem`)
if err != nil {
return nil, err
}
block, _ := pem.Decode(privateKey)
if block == nil {
return nil, errors.New("private key error")
}
priv, err := x509.ParsePKCS1PrivateKey(block.Bytes)
if err != nil {
return nil, err
}
return rsa.DecryptPKCS1v15(rand.Reader, priv, data)
}
其中public.pem是公鑰文件,private.pem是私鑰文件。
橢圓曲線密碼學(英語:Elliptic Curve Cryptography,縮寫:ECC)是一種基于橢圓曲線數學的公開密鑰加密算法。橢圓曲線在密碼學中的使用是在1985年由Neal Koblitz和Victor Miller分別獨立提出的。
ECC的主要優勢是在某些情況下它比其他的算法(比如RSA加密算法)使用更小的密鑰并提供相當的或更高等級的安全。ECC的另一個優勢是可以定義群之間的雙線性映射,基于Weil對或是Tate對;雙線性映射已經在密碼學中發現了大量的應用,例如基于身份的加密。
不過一個缺點是加密和解密操作的實現比其他機制花費的時間長。
橢圓曲線密碼學(英語:Elliptic curve cryptography,縮寫為 ECC),一種建立公開密鑰加密的算法,基于橢圓曲線數學。橢圓曲線在密碼學中的使用是在1985年由Neal Koblitz和Victor Miller分別獨立提出的。
ECC的主要優勢是在某些情況下它比其他的方法使用更小的密鑰——比如RSA加密算法——提供相當的或更高等級的安全。
橢圓曲線密碼學的許多形式有稍微的不同,所有的都依賴于被廣泛承認的解決橢圓曲線離散對數問題的 困難性上。與傳統的基于大質數因子分解困難性的加密方法不同,ECC通過橢圓曲線方程式的性質產生密鑰。
ECC 164位的密鑰產生的一個安全級相當于RSA 1024位密鑰提供的保密強度,而且計算量較小,處理速度 更快,存儲空間和傳輸帶寬占用較少。目前我國 居民二代身份證 正在使用 256 位的橢圓曲線密碼,虛擬 貨幣 比特幣 也選擇ECC作為加密算法。
具體算法詳解參考:
本文名稱:go語言rsa加密 go rsa加密
分享URL:http://vcdvsql.cn/article6/hiooog.html
成都網站建設公司_創新互聯,為您提供手機網站建設、ChatGPT、關鍵詞優化、商城網站、云服務器、搜索引擎優化
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯