前言
對(duì)于數(shù)據(jù)加密和解密每次我都是從網(wǎng)上拷貝一份,無(wú)需有太多了解,由于在.net core中對(duì)加密和解密目前全部是統(tǒng)一了接口,只是做具體的實(shí)現(xiàn),由于遇到過(guò)問(wèn)題,所以將打算基本了解下其原理,知其然足矣,知其所以然那就達(dá)不到了,利用AES加密更加安全,上一篇園友又提出,所以借著這個(gè)機(jī)會(huì)剛好用到加密和解密,同時(shí)我也已將項(xiàng)目中DES加密已替換為AES,在這里介紹一下。
AES加密介紹
高級(jí)加密標(biāo)準(zhǔn)(英語(yǔ):Advanced Encryption Standard,縮寫(xiě):AES),在密碼學(xué)中又稱(chēng)Rijndael加密法,是美國(guó)聯(lián)邦政府采用的一種區(qū)塊加密標(biāo)準(zhǔn)。這個(gè)標(biāo)準(zhǔn)用來(lái)替代原先的DES,已經(jīng)被多方分析且廣為全世界所使用。它要求區(qū)塊大小必須為128位,而密鑰長(zhǎng)度則可以為128、196、256位?;诖宋覀儊?lái)實(shí)現(xiàn).NET Framework版本和.NET Core版本。
在.NET Framework中實(shí)現(xiàn)AES加密和解密
AES加密
public static string EncryptText(string input, string key) { byte[] bytesToBeEncrypted = Encoding.UTF8.GetBytes(input); byte[] passwordBytes = Encoding.UTF8.GetBytes(key); passwordBytes = SHA256.Create().ComputeHash(passwordBytes); byte[] bytesEncrypted = AESEncryptBytes(bytesToBeEncrypted, pa