Go - 关于加密货币/兰特的示例

发布于 2024-08-29 15:51:22 字数 319 浏览 6 评论 0原文

可以举一个关于使用 crypto/rand [1] 的小例子吗?

函数Read 将字节数组作为参数。为什么?如果访问/dev/urandom来获取随机数据。

func Read(b []byte) (n int, err os.Error)

[1] http://golang.org/pkg/crypto/rand/

Could put a little example about the use of crypto/rand [1]?

The function Read has as parameter an array of bytes. Why? If it access to /dev/urandom to get the random data.

func Read(b []byte) (n int, err os.Error)

[1] http://golang.org/pkg/crypto/rand/

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

|煩躁 2024-09-05 15:51:22
func Read(b []byte) (n int, err os.Error)

Read 是一个调用 Reader.Read 的辅助函数。 Reader 定义为:var Reader io.Reader

crypto/rand/

io.Reader 是包装基本的Read方法。

Read 将最多 len(p) 个字节读取到 p 中。它返回读取的字节数 (0 <= n <= len(p)) 以及遇到的任何错误。即使Read返回n n len(p),它可能会在调用期间使用所有 p 作为暂存空间。如果某些数据可用,但不是 len(p) 字节,则 Read 通常会返回可用数据,而不是阻塞等待更多数据。

在输入流末尾,Read 返回 0, os.EOFRead 可能会返回非零字节数并出现非nil 错误。特别地,耗尽输入的Read可能返回n>n。 0,os.EOF

type Reader interface {
    Read(p []byte) (n int, err os.Error)
}

io/#Reader

例如,要读取前 16 个随机字节,

package main

import (
    "fmt"
    "crypto/rand"
)

func main() {
    b := make([]byte, 16)
    n, err := rand.Read(b)
    fmt.Println(n, err, b)
}

使用包 init() 函数,crypto/rand 默认使用 /dev/urandom

// Easy implementation: read from /dev/urandom.
// This is sufficient on Linux, OS X, and FreeBSD.
func init() { Reader = &devReader{name: "/dev/urandom"} }

crypto/rand/rand.go

func Read(b []byte) (n int, err os.Error)

Read is a helper function that calls Reader.Read. Reader is defined as: var Reader io.Reader.

crypto/rand/

io.Reader is the interface that wraps the basic Read method.

Read reads up to len(p) bytes into p. It returns the number of bytes read (0 <= n <= len(p)) and any error encountered. Even if Read returns n < len(p), it may use all of p as scratch space during the call. If some data is available but not len(p) bytes, Read conventionally returns what is available rather than block waiting for more.

At the end of the input stream, Read returns 0, os.EOF. Read may return a non-zero number of bytes with a non-nil err. In particular, a Read that exhausts the input may return n > 0, os.EOF.

type Reader interface {
    Read(p []byte) (n int, err os.Error)
}

io/#Reader

For example, to read the first 16 random bytes,

package main

import (
    "fmt"
    "crypto/rand"
)

func main() {
    b := make([]byte, 16)
    n, err := rand.Read(b)
    fmt.Println(n, err, b)
}

Using a package init() function, crypto/rand defaults to using /dev/urandom.

// Easy implementation: read from /dev/urandom.
// This is sufficient on Linux, OS X, and FreeBSD.
func init() { Reader = &devReader{name: "/dev/urandom"} }

crypto/rand/rand.go

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文