函数改变字节切片参数

我有以下代码,其中有一段带有字母表的字节,我将这个字母表数组复制到一个新变量(加密密钥)中,然后使用一个函数对其进行洗牌。结果是字母表和加密密钥字节片被打乱。我怎样才能防止这种情况发生?


package main


import (

    "fmt"

    "math/rand"

)


func main() {

    alphabet := []byte("ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz.")

    cryptkey := alphabet

    fmt.Println(string(alphabet))

    cryptkey = shuffle(cryptkey)

    fmt.Println(string(alphabet))

}


func shuffle(b []byte) []byte {

    l := len(b)

    out := b

    for key := range out {

        dest := rand.Intn(l)

        out[key], out[dest] = out[dest], out[key]

    }

    return out

}

结果 :


ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz。miclOfEInzJNvZe.YuVMCdTbXyqtaLwHGjUrABhog xQPWSpKRkDsF



慕容708150
浏览 164回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go