go语言

golang中crypto/rc4包

2018-12-09  本文已影响0人  ljh123

rc4包实现了RC4加密算法,参见Bruce Schneier's Applied Cryptography。

type KeySizeError int
func (KeySizeError) Error() string

type Cipher struct{...}
func NewCipher(key []byte) (*Cipher, error)
NewCipher创建并返回一个新的Cipher。参数key时RC4密钥,至少1字节,最多256字节。

func (c *Cipher) Reset()
Reset方法会清空密钥数据,以便将其数据从程序内存中清除(以免被破解)

func (c *Cipher) XORKeyStream(dst, src []byte)
XORKeyStream方法将src的数据与密钥生成的伪随机流取XOR并写入dst。dst和src可指向同一内存地址;但如果指向不同则其底层内存不可重叠。

Bugs:RC4被广泛使用,但设计上的缺陷使它很少用于较新的协议中。

package main

import (
    "crypto/rc4"
    "fmt"
    "log"
)

func main() {
    c, err := rc4.NewCipher([]byte("dsadsad"))
    if err != nil {
        log.Fatalln(err)
    }
    src := []byte("asdsad")
    dst := make([]byte, len(src))
    c.XORKeyStream(dst, src)
    fmt.Println(string(src), string(dst))
}
上一篇下一篇

猜你喜欢

热点阅读