iamok 发表于 2023-3-22 21:39:51

求助CyberChef中aes加密算法的实现

本帖最后由 iamok 于 2023-3-22 21:53 编辑

我在测试一个工具中使用的aes算法时,发现只有CyberChef用aes计算生成的结果可以通过,而用网上的在线计算和自己写代码的生成结果都行,感觉很奇怪不知道原因,有大佬来帮忙指点一下吗?

我的代码如下:
func encryptAES(key []byte, text []byte) (string, error) {
      //生成cipher.Block 数据块
      block, err := aes.NewCipher(key)
      if err != nil {
                log.Println("错误 -" + err.Error())
                return "", err
      }
      //填充内容,如果不足16位字符
      blockSize := block.BlockSize()
      originData := pad(text, blockSize)
      iv := key[:aes.BlockSize]
      //加密方式
      blockMode := cipher.NewCBCEncrypter(block, iv)
      //加密,输出到[]byte数组
      crypted := make([]byte, len(originData))
      blockMode.CryptBlocks(crypted, originData)
      return base64.StdEncoding.EncodeToString(crypted), nil
}

func pad(ciphertext []byte, blockSize int) []byte {
      padding := blockSize - len(ciphertext)%blockSize
      padtext := bytes.Repeat([]byte{byte(padding)}, padding)
      return append(ciphertext, padtext...)
}
最终生成的结果和网上在线生成的一致,却始终无法生成和CyberChef一致的结果

我的测试数据如下:
要加密的内容为:
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
{"timeFrom":"2021-01-1 00:00:00","timeUntil":"2099-12-31 00:00:00"}
key为:
12345678901234567890123456789012
IV为:
1234567890123456
正确的结果为:
CcWBogkXIq4HqhbsZDWUGyFinxxjMc17fSvE6wMoiB9bspJupFtmcKbi9kTc1cHiUD04CVSsvUwdYs/8eLgZYkqKdXIlaV8w7ZAu77fMypnDp3nNP71aPBS4uyFOv3e7L8XYKcWtt2AsOtrjcQ7a2UcQ/fjQfqX6CHcUHS/U7OuwwqiEwigbSJJOe9ZI5vyKJVFfZz4xnu8nte7MfRJO9dYDuPmCRaOzWaSGMFFcx4yLfvwBR9mNdK6vaKhfQRUsW3kqaBNhEYi3FjsKlF/URPRfUuHMrAeWMam3ETCwHd/LVP46XIi4dkk+lhG1mN2s8PeQGmeiWJAjiU82JMBtjfc3w4CBEwQxvxtOEuL6PnIr2U56+8uKCRD03s8mkATgExP1CmDGwM8AS/x7hr1V/ADlkgqPGHavAWHm+gPdFxHaO8BMUYOqqD/T/RpyeyQGhfJPaxyADwszxENOWtrPeu3H4kq1nb3gcqUP4bA1FKd8BUxC70z1dGPWBrYVGfoW/+jg/6QELa9EQPzuA6M/jCGPkL+HUuA/JJX1VvtzF8YvVCfSe7SFE5Nxta3XiPCUC70bELC8OFiYhnrtnEeXhXxJwrbSK+kcGiCsQs0EcVF9Z+XF6N+xgIwmHlo750sAVgLMb9oN8LRv62q5Dr5piueahoRj5NXNbXDKiOggEoN5kq9ot109DFT5lFYwHGfPGs5i9uc3I5dCuka6EO08ZqpMBW8CEpRthKROQHPhbqO5fOIx+4WO297BldkRrS8Ll0fB6k1R20Q8RntszvUEj+9BhfHE8ZIb3VhT/mpV6JLNNoyMqatpyYuXNSw3W/RP6JEKH6rvZYyQM6MLgMfgDMjFEhlt1U3pI3dRtLk12JPrCh+U0fRmGZY5c4/FVuO3rxBpvgOHUFNFjzeuWXwFeXrrPR4fe2zrbvKyLsjAQ7Egf+BmbAnvCSw1YquYbmyzpumJEXN8lJErHahCntlUbjD1Z5hwVfBz4fgzlSACGdVJKFsr698/2xSLtiNMr78ssuhw1PZmgxgpfRaKHDG/XXEUczPKDD4MW+6L/z/XG2tLchFyeyDJd8/RAu16sfgxafLwDQD85gTMZBEVBxPVZw848Y9Iye/qHktZTAS6wg0E4REH5CryEogLQpacUxp3FBXBDNgBtG8TFRTpXcmx7S10lS4fnO9h44HDCkDOUh6ZqLZ0gcgvOGy5E6q5YsuZD+7GKQNQSPyPJ0ywBY13W8Y0y023sFzUC6ad9U6fWBxPG05M/pxt9S3yo/GWXbRa4PVh/PrADcN1VA6PsuvHGKmOPFL4jItad74NK2UqS+5nU6KLjldiFoKyYAGP33itmf0NcHvf1AnYnYdFl0djBota5FN6+KN999+IbvnQf5Ixk8rfTqxqxj9E65ESGBunajqnu5ZULsmV1uZJ1R6eofZC6SyZhDED1pY7zgJyAdFNe0F4EMoGD1x2fa/B3cNv
我的代码和网上在线生成的结果为:
CcWBogkXIq4HqhbsZDWUGyFinxxjMc17fSvE6wMoiB9bspJupFtmcKbi9kTc1cHiUD04CVSsvUwdYs/8eLgZYkqKdXIlaV8w7ZAu77fMypnDp3nNP71aPBS4uyFOv3e7L8XYKcWtt2AsOtrjcQ7a2UcQ/fjQfqX6CHcUHS/U7OuwwqiEwigbSJJOe9ZI5vyKJVFfZz4xnu8nte7MfRJO9dYDuPmCRaOzWaSGMFFcx4yLfvwBR9mNdK6vaKhfQRUsW3kqaBNhEYi3FjsKlF/URPRfUuHMrAeWMam3ETCwHd/LVP46XIi4dkk+lhG1mN2s8PeQGmeiWJAjiU82JMBtjfc3w4CBEwQxvxtOEuL6PnIr2U56+8uKCRD03s8mkATgExP1CmDGwM8AS/x7hr1V/ADlkgqPGHavAWHm+gPdFxHaO8BMUYOqqD/T/RpyeyQGhfJPaxyADwszxENOWtrPeu3H4kq1nb3gcqUP4bA1FKd8BUxC70z1dGPWBrYVGfoW/+jg/6QELa9EQPzuA6M/jCGPkL+HUuA/JJX1VvtzF8YvVCfSe7SFE5Nxta3XiPCUC70bELC8OFiYhnrtnEeXhXxJwrbSK+kcGiCsQs0EcVF9Z+XF6N+xgIwmHlo750sAVgLMb9oN8LRv62q5Dr5piueahoRj5NXNbXDKiOggEoN5kq9ot109DFT5lFYwHGfPGs5i9uc3I5dCuka6EO08ZqpMBW8CEpRthKROQHPhbqO5fOIx+4WO297BldkRrS8Ll0fB6k1R20Q8RntszvUEj+9BhfHE8ZIb3VhT/mpV6JLNNoyMqatpyYuXNSw3W/RP6JEKH6rvZYyQM6MLgMfgDMjFEhlt1U3pI3dRtLk12JPrCh+U0fRmGZY5c4/FVuO3rxBpvgOHUFNFjzeuWXwFeXrrPR4fe2zrbvKyLsjAQ7Egf+BmbAnvCSw1YquYbmyzpumJEXN8lJErHahCntlUbjD1Z5hwVfBz4fgzlSACGdVJKFsr698/2xSLtiNMr78ssuhw1PZmgxgpfRaKHDG/XXEUczPKDD4MW+6L/z/XG2tLchFyeyDJd8/RAu16sfgxafLwDQD85gTMZBEVBxPVZw848Y9Iye/qHktZTAS6wg0E4REH5CryEogLQpacUxp3FBXBDNgBtG8TFRTpXcmx7S10lS4fnO9h44HDCkDOUh6ZqLZ0gcgvOGy5E6q5YsuZD+7GKQNQSPyPJ0ywBY13W8Y0y023sFzUC6ad9U6fWBxPG05M/pxt9S3yo/GWXbRa4PVh/PrADcN1VA6PsuvHGKmOPFL4jItad74NK2UqS+5nU6KLjldiFoKyYAGP33itmf0NcHvf1AnYnYdFl0djBgrGmoPXIGRxY7bYmHIBRv2h4u+H9OaoXQ53MkWuOusreijByqEmtJCraTvDLIm+A6mp2tAjhLVYg4e0EW/nYECd+/D8zquB+BsR5SAE4lXA

iamok 发表于 2023-3-22 21:55:17

自己找到原因了
我使用的这个CyberChef版本在处理\r\n时自动当成\n在处理,最新版的CyberChef则不会。
而刚好我提示的这个程序应该也是这么在处理。

doglove 发表于 2023-3-24 06:59:14

学习了,好贴。
页: [1]
查看完整版本: 求助CyberChef中aes加密算法的实现