當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


GO StreamReader用法及代碼示例

GO語言"crypto/cipher"包中"StreamReader"類型的用法及代碼示例。

StreamReader 將 Stream 包裝到 io.Reader 中。它調用 XORKeyStream 來處理通過的每個數據片。

用法:

type StreamReader struct {
    S Stream
    R io.Reader
}

例子:

package main

import (
    "bytes"
    "crypto/aes"
    "crypto/cipher"
    "encoding/hex"
    "io"
    "os"
)

func main() {
    // Load your secret key from a safe place and reuse it across multiple
    // NewCipher calls. (Obviously don't use this example key for anything
    // real.) If you want to convert a passphrase to a key, use a suitable
    // package like bcrypt or scrypt.
    key, _ := hex.DecodeString("6368616e676520746869732070617373")

    encrypted, _ := hex.DecodeString("cf0495cc6f75dafc23948538e79904a9")
    bReader := bytes.NewReader(encrypted)

    block, err := aes.NewCipher(key)
    if err != nil {
        panic(err)
    }

    // If the key is unique for each ciphertext, then it's ok to use a zero
    // IV.
    var iv [aes.BlockSize]byte
    stream := cipher.NewOFB(block, iv[:])

    reader := &cipher.StreamReader{S: stream, R: bReader}
    // Copy the input to the output stream, decrypting as we go.
    if _, err := io.Copy(os.Stdout, reader); err != nil {
        panic(err)
    }

    // Note that this example is simplistic in that it omits any
    // authentication of the encrypted data. If you were actually to use
    // StreamReader in this manner, an attacker could flip arbitrary bits in
    // the output.

}

輸出:

some secret text

相關用法


注:本文由純淨天空篩選整理自golang.google.cn大神的英文原創作品 StreamReader。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。