添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
// 1. 使用rsa中的GenerateKey方法生成私钥 privateKey , err : = rsa . GenerateKey ( rand . Reader , keySize ) if err != nil { panic ( err ) // 2. 通过x509标准将得到的ras私钥序列化为ASN.1 的 DER编码字符串 derText : = x509 . MarshalPKCS1PrivateKey ( privateKey ) // 3. 要组织一个pem.Block(base64编码) block : = pem . Block { Type : "rsa private key" , // 这个地方写个字符串就行 Bytes : derText , // 4. pem编码 file , err : = os . Create ( "private.pem" ) if err != nil { panic ( err ) pem . Encode ( file , & block ) file . Close ( ) // ============ 公钥 ========== // 1. 从私钥中取出公钥 publicKey : = privateKey . PublicKey // 2. 使用x509标准序列化 derstream , err : = x509 . MarshalPKIXPublicKey ( & publicKey ) if err != nil { panic ( err ) // 3. 将得到的数据放到pem.Block中 block = pem . Block { Type : "rsa public key" , Bytes : derstream , // 4. pem编码 file , err = os . Create ( "public.pem" ) if err != nil { panic ( err ) pem . Encode ( file , & block ) file . Close ( ) // RSA 加密, 公钥加密 func RSAEncrypt ( plainText [ ] byte , fileName string ) [ ] byte { // 1. 打开文件, 并且读出文件内容 file , err : = os . Open ( fileName ) if err != nil { panic ( err ) fileInfo , err : = file . Stat ( ) if err != nil { panic ( err ) buf : = make ( [ ] byte , fileInfo . Size ( ) ) file . Read ( buf ) file . Close ( ) // 2. pem解码 block , _ : = pem . Decode ( buf ) pubInterface , err : = x509 . ParsePKIXPublicKey ( block . Bytes ) //断言类型转换 pubKey : = pubInterface . ( * rsa . PublicKey ) // 3. 使用公钥加密 cipherText , err : = rsa . EncryptPKCS1v15 ( rand . Reader , pubKey , plainText ) if err != nil { panic ( err ) return cipherText // RSA 解密 func RSADecrypt ( cipherText [ ] byte , fileName string ) [ ] byte { // 1. 打开文件, 并且读出文件内容 file , err : = os . Open ( fileName ) if err != nil { panic ( err ) fileInfo , err : = file . Stat ( ) if err != nil { panic ( err ) buf : = make ( [ ] byte , fileInfo . Size ( ) ) file . Read ( buf ) file . Close ( ) // 2. pem解码 block , _ : = pem . Decode ( buf ) privKey , err : = x509 . ParsePKCS1PrivateKey ( block . Bytes ) if err != nil { panic ( err ) // 3. 使用私钥解密 plainText , err : = rsa . DecryptPKCS1v15 ( rand . Reader , privKey , cipherText ) if err != nil { panic ( err ) return plainText func main ( ) { GenerateRsaKey ( 4096 ) src : = [ ] byte ( " 好好学习,天天向上... 好好学习,天天向上... 好好学习,天天向上... 好好学习,天天向上... 好好学习,天天向上..." ) cipherText : = RSAEncrypt ( src , "public.pem" ) plainText : = RSADecrypt ( cipherText , "private.pem" ) fmt . Println ( string ( plainText ) ) myHash ( ) // 使用sha256 func myHash ( ) { // sha256.Sum256([]byte("hello, go")) // 1. 创建哈希接口对象 myHash : = sha256 . New ( ) // 2. 添加数据 src : = [ ] byte ( " 好好学习,天天向上... 好好学习,天天向上... 好好学习,天天向上... 好好学习,天天向上... 好好学习,天天向上..." ) myHash . Write ( src ) myHash . Write ( src ) myHash . Write ( src ) // 3. 计算结果 res : = myHash . Sum ( nil ) // 4. 格式化为16进制形式 myStr : = hex . EncodeToString ( res ) fmt . Printf ( "%s\n" , myStr )

防爬虫说明

禁止 学习某地爬虫,知乎爬虫,CSDN 爬虫。

本文,首发在 learnku 社区。

@author
汪春波(
www.shxdledu.cn)

本作品采用 《CC 协议》 ,转载必须注明作者和本文链接