ESSAY / NOTE

消息认证码介绍

对称加密的问题: 背景: Alice 向 Bob说, 你好! 对称加密:password A:你好 =》 加密 =》 *&*……*(……TUGG =====》 传输 B:密文( *&*……*(……TUGG =====》) =》 解密 =》 你好!! ++++++++++++++++++++++ 假如A发的消息就是不可读(&*……%¥¥……&*&%¥#@) 加密,解密 B收到密文后解密:(&*……%¥¥……&*&%¥#@) 问题:B解出来的是乱码,B无法判断这个消息就是A发的原文!! 解决办法:引入消息认证码
func main() {

	src := []byte("不是一番寒彻骨,哪得梅花扑鼻香!!! 123456734523452345")
	key := []byte("1234567887654321")

	cipherData := aesCTREncrypt(src, key)

	fmt.Printf("cipherData : %x\n", cipherData)

	fmt.Printf("+++++++++++++++++++++++++\n")

	cipherData = append(cipherData, []byte("hello")...)

	plainText := aesCTRDecrypt(cipherData, key)
	fmt.Printf("plainText : %x\n", plainText)
}
密文被改变,依然可以解出数据,但是不知道数据是否可靠 明文: 不是一番寒彻骨,哪得梅花扑鼻香!!! 123456734523452345 aes block size : 16 cipherData : d8d1cfb975e7c16451a9d7fda95ea6782cc5133d42c19e3f63cb4d82e494889eac4b756e0b427b263a07a527811c16b80f3d49a4240b66fb6ae21afffa114c5e8a17f9fa +++++++++++++++++++++++++ plainText : e4b88de698afe4b880e795aae5af92e5bdbbe9aaa8efbc8ce593aae5be97e6a285e88ab1e68991e9bcbbe9a699212121203132333435367333435323334353233343509e9364ebf0b