关于加解密函数和 io.ReadFull,io.Reader 的一些疑问

lmssky · · 783 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

最近想储存些多个类型虚拟货币(btc,ltc,eth,eos),但是私钥太多,怕忘搞丢所以想改改加密函数 自己输入字符串生成私钥(为了让多个加密货币的私钥加密随机串一致) 但是golang接触的不多 所以看不懂该怎么改 文中关键函数为` io.ReadFull(rand, b)` 我想让rand 随机字符串,改为自己定义字符串如"123456" 再加密为私钥 这样我就只需要记住字符串再保存这个golang文件就不怕丢失私钥了 ,也不怕被盗 但这里他是一个io类型所以不知道该怎么入手, 描述完毕谢谢 **项目文件地址 github.com/oldnicke/ltcaddressgenie** ``` var priv ltckey.PrivateKey priv, err := ltckey.GenerateKey(rand.Reader) func GenerateKey(rand io.Reader) (priv PrivateKey, err error) { /* See Certicom's SEC1 3.2.1, pg.23 */ /* See NSA's Suite B Implementer’s Guide to FIPS 186-3 (ECDSA) A.1.1, pg.18 */ /* Select private key d randomly from [1, n) */ /* Read N bit length random bytes + 64 extra bits */ b := make([]byte, secp256k1.N.BitLen()/8+8) _, err = io.ReadFull(rand, b) if err != nil { return priv, fmt.Errorf("Reading random reader: %v", err) } d := new(big.Int).SetBytes(b) /* Mod n-1 to shift d into [0, n-1) range */ d.Mod(d, new(big.Int).Sub(secp256k1.N, big.NewInt(1))) /* Add one to shift d to [1, n) range */ d.Add(d, big.NewInt(1)) priv.D = d /* Derive public key from private key */ priv.derive() return priv, nil } ```

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

783 次点击  
加入收藏 微博
1 回复  |  直到 2019-08-17 11:01:05
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传