常用的檔案加密演算法有:des、aes、rsa、sha-1、md5.....
.net自帶了安全類庫,在system.security.cryptography下有一些常用的加密演算法
其中md5屬於摘要演算法,多用於檢查檔案是否有修改
——對稱加密
對稱加密演算法有aes、des、3des等
在對稱加密演算法中,金鑰只有乙個,加密和解密都使用相同的金鑰
——非對稱加密
非對稱加密演算法有rsa、dsa、ecc等
在非對稱加密演算法中,需要兩個金鑰,乙個公鑰乙個私鑰
如果使用公鑰對資料進行加密,只有使用對應的私鑰才能進行解密,如果使用私鑰對資料進行加密,只有使用對應的公鑰才能進行解密
——簽名加密演算法(雜湊演算法)
簽名加密演算法有sha1、md5、hmac等
簽名加密演算法不需要金鑰,一般不可逆
需要注意的是加密後獲得的bytes千萬別用utf8去獲取字串,不然會有資訊損失,導致後面解密失敗
using system;
using system.security.cryptography;
using system.text;
/// /// aes工具
///
public class aesutils
byte contentbytes = encoding.utf8.getbytes(content);
byte keybytes = encoding.utf8.getbytes(aes_key);
rijndaelmanaged rm = new rijndaelmanaged();
rm.key = keybytes;
rm.mode = ciphermode.ecb;
rm.padding = paddingmode.pkcs7;
icryptotransform ict = rm.createencryptor();
byte resultbytes = ict.transformfinalblock(contentbytes, 0, contentbytes.length);
return convert.tobase64string(resultbytes, 0, resultbytes.length);
}/// /// aes解密
///
/// 密文
public static string decrypt(string content)
byte contentbytes = convert.frombase64string(content);
byte keybytes = encoding.utf8.getbytes(aes_key);
rijndaelmanaged rm = new rijndaelmanaged();
rm.key = keybytes;
rm.mode = ciphermode.ecb;
rm.padding = paddingmode.pkcs7;
icryptotransform ict = rm.createdecryptor();
byte resultbytes = ict.transformfinalblock(contentbytes, 0, contentbytes.length);
return encoding.utf8.getstring(resultbytes);
}}
需要注意的是加密後獲得的bytes千萬別用utf8去獲取字串,不然會有資訊損失,導致後面解密失敗
using system;
using system.security.cryptography;
using system.text;
using system.io;
using unityengine;
/// /// des工具
///
public class desutils
byte contentbytes = encoding.utf8.getbytes(content);
byte keybytes = encoding.utf8.getbytes(des_key);
descryptoserviceprovider provider = new descryptoserviceprovider();
provider.key = keybytes;
provider.iv = keybytes;
memorystream ms = new memorystream();
cryptostream cs = new cryptostream(ms, provider.createencryptor(), cryptostreammode.write);
cs.write(contentbytes, 0, contentbytes.length);
cs.flushfinalblock();
return convert.tobase64string(ms.toarray());
}/// /// des解密
///
/// 密文
public static string decrypt(string content)
byte contentbytes = convert.frombase64string(content);
byte keybytes = encoding.utf8.getbytes(des_key);
descryptoserviceprovider provider = new descryptoserviceprovider();
provider.key = keybytes;
provider.iv = keybytes;
memorystream ms = new memorystream();
cryptostream cs = new cryptostream(ms, provider.createdecryptor(), cryptostreammode.write);
cs.write(contentbytes, 0, contentbytes.length);
cs.flushfinalblock();
return encoding.utf8.getstring(ms.toarray());
}}
unity夾克加密 unity加密方案
分成c sdk 和c dll so 加解密流程 c new乙個新類,初始化的時候傳入key c 通過setstring方法傳入待加密或者解密字串 c 通過run方法,傳遞要求加密 0 或者解密 1 c 通過getstring方法獲取加密或者解密結果 dll c 功能 核心加解密函式 金鑰保密 key...
Unity中實現解析CSV檔案
在我們的專案開發過程中,策劃們可能會配置很多的資料在一些文字文字中,例如 物品,隨機名稱等,往往這些資料會放在不同的csv檔案中 逗號分隔值 comma separated values 其檔案以純文字形式儲存 資料,資料與資料之間用英文逗號分割 下面兩張圖為excel 形式轉換為csv形式 建立e...
Unity中實現檢測檔案是否需要更新
可以使用md5值去判斷檔案是否有更新,每乙個檔案都對應著乙個唯一的md5碼 我們可以儲存當前檔案的md5值,當每次進入遊戲時再次獲取此檔案的md5值與儲存的md5值進行比對,如果不一致則需要更新 using system using system.security.cryptography usin...