crypt/random.go
func (s *Random) Read(b []byte) (n int, err error) {
	s.mutex.Lock()
	defer s.mutex.Unlock()

	for i, _ := range b {
		b[i] = s.readByte()
	}

	return len(b), nil
}
func (s *Random) Read(b []byte) (n int, err error) {
	s.mutex.Lock()
	defer s.mutex.Unlock()

	for i, _ := range b {
		b[i] = s.readByte()
	}

	return len(b), nil
}
// Read fills specified byte array with random data.
// Always return parameter array length and no errors.