㈠ sql資料庫中欄位如何加密
你將你的數據先加密好了。再存儲到資料庫。讀取的時候,解密了再顯示就可以了
㈡ 請問SQL怎麼對數據進行加密
--以下代碼包括創建密鑰,加密,解密和刪除密鑰
/*
1.利用對稱密鑰
搭配EncryptByKey進行數據加密
使用DecryptByKey函數進行解密
這種方式比較適合大數據量
*/
='XIAOMA'
='ZXCCERTIFICATE',EXPIRY_DATE='2015/01/01'
CREATESYMMETRICKEYSYM_TOMWITHALGORITHM=
OPENSYMMETRICKEYSYM_
SELECTCONVERT(NVARCHAR(10),Decryptbykey((Encryptbykey(Key_guid('SYM_TOM'),N'TOM3'))))
CLOSESYMMETRICKEYSYM_TOM
DROPSYMMETRICKEYSYM_TOM
DROPCERTIFICATETOMCERT;
DROPMASTERKEY;
--或--
=AES_256ENCRYPTIONBYPASSWORD='ZXC123456'
='ZXC123456'
SELECTCONVERT(VARCHAR(10),Decryptbykey(Encryptbykey(Key_guid('ZXC'),'YHDH_C')))
CLOSESYMMETRICKEYZXC;
DROPSYMMETRICKEYZXC;
/*
2.利用非對稱密鑰
搭配EncryptByAsymKey進行數據加密
使用DecryptByAsymKey函數進行解密
用於更高安全級別的加解密數據
*/
='XIAOMA'
=RSA_2048ENCRYPTIONBYPASSWORD='ZXC123456'
(DECRYPTIONBYPASSWORD='ZXC123456')
SELECTCONVERT(VARCHAR(100),Decryptbyasymkey(Asymkey_id('ABC'),Encryptbyasymkey(Asymkey_id('ABC'),'ZXC123456')))
DROPASYMMETRICKEYABC;
DROPMASTERKEY
/*
3.利用憑證的方式
搭配EncryptByCert進行加密
DecryptByCert函數進行解密
比較類似非對稱密鑰
*/
='XIAOMA'
='ZXCCERTIFICATE',EXPIRY_DATE='2015/01/01'
SELECTCONVERT(VARCHAR(20),Decryptbycert(Cert_id('ZXC'),Encryptbycert(Cert_id('ZXC'),'123456')))
DROPCERTIFICATEZXC;
DROPMASTERKEY
--或--
='Mary5',
SECRET='123456';
ALTERLOGINUser1
ADDCREDENTIALAlterEgo
DropCREDENTIALAlterEgo
DROPCREDENTIALAlterEgo
/*
4.利用密碼短語方式
搭配EncryptBypassPhrase進行加密
使用DecryptByPassPhrase函數來解密
比較適合一般的數據加解密
*/
SELECTCONVERT(VARCHAR(100),Decryptbypassphrase('xiaoma',Encryptbypassphrase('xiaoma','123456')))
㈢ SQLsever資料庫加密演算法,C#
//這個是我拿別人固定密匙改成隨機密匙的加解密靜態類,希望對你有幫助
//做成隨機密匙的想法是:讓同一個明文密碼,存在資料庫中的密文是完全不一樣的(如果是固定密匙,則明文一樣則密文就完全一樣)
public static class MakePW //靜態類:加密解密類
{
//默認密鑰向量
private static byte[] Keys = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
/// 加密密鑰,要求為8位
//private static string TKey = "T1234567";
public static string EncryptPW(string encryptString)//加密
{
string encryptKey;
encryptKey = TKey(8);//獲得8位隨機鑰匙
try
{
byte[] rgbKey = Encoding.UTF8.GetBytes(encryptKey);
byte[] rgbIV = Keys;
byte[] inputByteArray = Encoding.UTF8.GetBytes(encryptString);
DESCryptoServiceProvider dCSP = new DESCryptoServiceProvider();
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, dCSP.CreateEncryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
cStream.Write(inputByteArray, 0, inputByteArray.Length);
cStream.FlushFinalBlock();
return encryptKey + Convert.ToBase64String(mStream.ToArray());
}
catch
{
return encryptString;//返回鑰匙+加密後的字元串
}
}
public static string DecryptPW(string decryptString)//解密
{
try
{
byte[] rgbKey = Encoding.UTF8.GetBytes(decryptString.Substring(0,8));//獲得密鑰
decryptString = decryptString.Substring(8, decryptString.Length - 8);//去除密鑰
byte[] rgbIV = Keys;
byte[] inputByteArray = Convert.FromBase64String(decryptString);
DESCryptoServiceProvider DCSP = new DESCryptoServiceProvider();
MemoryStream mStream = new MemoryStream();
CryptoStream cStream = new CryptoStream(mStream, DCSP.CreateDecryptor(rgbKey, rgbIV), CryptoStreamMode.Write);
cStream.Write(inputByteArray, 0, inputByteArray.Length);
cStream.FlushFinalBlock();
return Encoding.UTF8.GetString(mStream.ToArray());
}
catch
{
return decryptString;
}
}
internal static string TKey(int pwdlen)//產生隨機字元串,獲取隨機密鑰
{
string pwdchars = "~!@#$%^&*()_+";
string tmpstr = "";
int iRandNum;
Random rnd = new Random();
for (int i = 0; i < pwdlen; i++)
{
iRandNum = rnd.Next(pwdchars.Length);
tmpstr += pwdchars[iRandNum];
}
return tmpstr;
}
}
㈣ 教你怎樣實現SQL密文加密,不可反編譯
use Tempdbgoifobject_ID('fn_ACITEncryption')isnotnull dropfunction fn_ fn_ACITEncryption( @Str nvarchar( 4000),--加密的字元串 @Flag bit= 1,--1、加密0、解密 @Key nvarchar( 50)--密文)returnsnvarchar( 4000)--這里可轉換成二進制withEncryptionasbeginDeclare @LenStr int, @i int, @Str2 nvarchar( 4000), @Split nvarchar( 2), @LenKey intselect @Str= @Str+'A', @LenStr=len( @Str), @i= 1, @Str2='', @LenKey=Len( @Key+'A')- 1while @i< @LenStr select @Split=substring( @Str, @i, 1), @Split=nchar((unicode( @Split)+case @Flag when 1 thenunicode(substring( @Key+'A', @i% @LenKey+ 1, 1))- 1 when 0 then 65535-unicode(substring( @Key+'A', @i% @LenKey+ 1, 1)) else 0 end)% 65535+cast( @Flag asint)), @Str2= @Str2+ @Split, @i= @i+ 1return @Str2 endgoselect dbo. fn_ACITEncryption( N'Roy', 1,'123')as加密後字元串 /*加密後字元串------------------------------(1 個資料列受到影響) */select dbo. fn_ACITEncryption( N, 0,'123')as解密後字元串/*解密後字元串--------------------------Roy (1 個資料列受到影響)*/
㈤ sql中varbinary加密的簡單方法有什麼
1、可以使用二個SQLServer未公開的函數:
>PwdCncrypt(),實現對輸入數據進行加密後返回二進制形式的加密內容,
>PwdCompare(),用於檢查明文是否與加密的二進制數據內容相等,沒有解密函數。
這二個函數主要是用於SQLServer內部自己調用。優點是調用方便,缺點是這二個函數沒有公開,就意味著可能改變,並且不兼容原來的,在使用上存在風險。
2、若想控制密鑰,有4個函數
ENCRYPTBYASYMKEY() --非對稱密鑰
ENCRYPTBYCERT() --證書加密
ENCRYPTBYKEY() --對稱密鑰
ENCRYPTBYPASSPHRASE() --通行短語(PassPhrase)加密
使用起來相對會復雜些。
㈥ sql數據加密有幾種方法
對sql中的數據進行加密,有5種方法,
1、利用CONVERT改變編碼方式:
利用該函數把文字或數據轉換成VARBINARY。但該方式不具備保護數據的能力,僅避免瀏覽數據的過程中能直接看到敏感數據的作用。
2、利用對稱密鑰:
搭配EncryptByKey進行數據加密。使用DecryptByKey函數進行解密。這種方式比較適合大數據量。因為對稱密鑰的過程耗用資源較少。
3、利用非對稱密鑰:
搭配EncryptByAsymKey進行數據加密。使用DecryptByAsymKey函數進行解密。用於更高安全級別的加解密數據。因為耗用資源叫多。
4、利用憑證的方式:
搭配EncryptByCert進行加密和DecryptByCert函數進行解密。比較類似非對稱密鑰。
5、利用密碼短語方式:
搭配EncryptBypassPhrase進行加密,使用DecryptByPassPhrase函數來解密。可以使用有意義的短語或其他數據行,當成加密、解密的關鍵字,比較適合一般的數據加解密。
(6)sql中的加密演算法擴展閱讀:
sql資料庫的組成:
在正式學習SQL語言之前,首先讓我們對SQL語言有一個基本認識,介紹一下SQL語言的組成:
1、一個SQL資料庫是表(Table)的集合,它由一個或多個SQL模式定義。
2、一個SQL表由行集構成,一行是列的序列(集合),每列與行對應一個數據項。
3、一個表或者是一個基本表或者是一個視圖。基本表是實際存儲在資料庫的表,而視圖是由若干基本表或其他視圖構成的表的定義。
4、一個基本表可以跨一個或多個存儲文件,一個存儲文件也可存放一個或多個基本表。每個存儲文件與外部存儲上一個物理文件對應。
5、用戶可以用SQL語句對視圖和基本表進行查詢等操作。在用戶角度來看,視圖和基本表是一樣的,沒有區別,都是關系(表格)。
6、SQL用戶可以是應用程序,也可以是終端用戶。SQL語句可嵌入在宿主語言的程序中使用,宿主語言有FORTRAN,COBOL,PASCAL,PL/I,C和Ada語言等。
SQL用戶也能作為獨立的用戶介面,供交互環境下的終端用戶使用。
參考資料來源:網路-SQL資料庫
㈦ SQL資料庫中加密密碼解密
一般都是MD5 一般是不能解密的。。 可以通過已知的md5值替換掉 原來的密碼值就把密碼改了
㈧ 如何對sqlserver2005資料庫中表欄位進行加密,解密
那你可以通過編程
在保存的時候,先把欄位內容進得加密,然後再保存到資料庫中。
讀取的時候,讀出數據後,再進行解密操作。
㈨ 請教SQL高手,如何在SQL SERVER 2005中使用MD5演算法,加密數據表中的內容
select
sys.fn_VarBinToHexStr(HashBytes('MD5',
'reaky'))
不過加了密就解不出來了哦,你也可以參考下面連接中牛人自己寫的加密演算法
http://www.itpub.net/thread-924137-1-1.html
㈩ 資料庫欄位加密演算法
字元對照表,加密
按下列方式找加密規律
明文 密文
1 8
11 8f
111 8fk
2
3
4
12
13
14
.....