data, err := ioutil.ReadFile(file) if err != nil { log.Fatal(err) } n := len(data)
IV := data[:BlockSize] KEY, err := hex.DecodeString(key) if err != nil { log.Fatal("key decode err :" + err.Error()) }
sum := sha256.Sum256(KEY) for i := BlockSize; i < BlockSize*2; i++ { // 判断加解密的key是否相同 if sum[i-BlockSize] != data[i] { log.Fatal("you use wrong key") } }
for i := 2 * BlockSize; i < n; i += BlockSize { // CBC解密 sText := data[i : i+BlockSize] text := sm4.Decrpty(sText, KEY) process(text, IV) IV = sText res = append(res, text...) }