Шыфраванне і дэшыфраванне дадзеных з C # і SQL Server

Я хачу стварыць прыкладанне ASP.NET з C# і я буду захоўваць дадзеныя на SQL Server 2005 года, гэтыя дадзеныя будуць зашыфраваныя я хачу знайсці алгарытм для шыфравання дадзеных з дапамогай C# і расшыфраваць яго на SQL служыць бок, і я хачу шыфраваць некаторыя дадзеныя з SQL і расшыфраваць яго з C#, што гэта лепшы алгарытм для гэтага ??

private byte[] key = {
    0x61,
    0x72,
    0x84,
    0x7a,
    0x24,
    0x43,
    0x65,
    0x64,
    0x73,
    0x55,
    0x64,
    0x75,
    0x66

};



const string PASSWORD = "TestPassword";
public object Encrypt(string sPlainText)
{



    byte[] aPlainBytes = null;

    PasswordDeriveBytes aPassword = default(PasswordDeriveBytes);



    aPlainBytes = System.Text.Encoding.Unicode.GetBytes(sPlainText);

    aPassword = new PasswordDeriveBytes(PASSWORD, key);

    byte[] sEncryptedData = Encrypt(aPlainBytes, aPassword.GetBytes(32), aPassword.GetBytes(16));

    //' MessageBox.Show(Convert.ToString(sEncryptedData.ToString))

    return Convert.ToBase64String(sEncryptedData);



}



private byte[] Encrypt(byte[] sPlainData, byte[] aKey, byte[] aIV)
{



    MemoryStream oMemoryStream = new MemoryStream();



    Rijndael oRijndael = Rijndael.Create();

    oRijndael.Key = aKey;



    oRijndael.IV = aIV;



    CryptoStream oCryptoStream = new CryptoStream(oMemoryStream, oRijndael.CreateEncryptor(), CryptoStreamMode.Write);

    oCryptoStream.Write(sPlainData, 0, sPlainData.Length);

    oCryptoStream.Close();

    byte[] aEncryptedData = oMemoryStream.ToArray();




    return aEncryptedData;



}
0
дзе вы плануеце хаваць ключ?
дададзена аўтар John Hartsock, крыніца

2 адказы

C#: System.Security.Cryptography

SQL Server: Sql Server Encryption

C# Example from here:

private static void EncryptData(String inName, String outName, byte[] tdesKey, byte[] tdesIV)
{    
    //Create the file streams to handle the input and output files.
    FileStream fin = new FileStream(inName, FileMode.Open, FileAccess.Read);
    FileStream fout = new FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);
    fout.SetLength(0);

    //Create variables to help with read and write.
    byte[] bin = new byte[100]; //This is intermediate storage for the encryption.
    long rdlen = 0;              //This is the total number of bytes written.
    long totlen = fin.Length;    //This is the total length of the input file.
    int len;                     //This is the number of bytes to be written at a time.

    TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();          
    CryptoStream encStream = new CryptoStream(fout, tdes.CreateEncryptor(tdesKey, tdesIV), CryptoStreamMode.Write);

    Console.WriteLine("Encrypting...");

    //Read from the input file, then encrypt and write to the output file.
    while(rdlen < totlen)
    {
        len = fin.Read(bin, 0, 100);
        encStream.Write(bin, 0, len);
        rdlen = rdlen + len;
        Console.WriteLine("{0} bytes processed", rdlen);
    }

    encStream.Close();                     
}

SQL Server Example from here:

USE AdventureWorks2008R2;
GO

--If there is no master key, create one now. 
IF NOT EXISTS 
    (SELECT * FROM sys.symmetric_keys WHERE symmetric_key_id = 101)
    CREATE MASTER KEY ENCRYPTION BY 
    PASSWORD = '23987hxJKL969#ghf0%94467GRkjg5k3fd117r$$#1946kcj$n44nhdlj'
GO

CREATE CERTIFICATE HumanResources037
   WITH SUBJECT = 'Employee Social Security Numbers';
GO

CREATE SYMMETRIC KEY SSN_Key_01
    WITH ALGORITHM = AES_256
    ENCRYPTION BY CERTIFICATE HumanResources037;
GO

USE [AdventureWorks2008R2];
GO

-- Create a column in which to store the encrypted data.
ALTER TABLE HumanResources.Employee
    ADD EncryptedNationalIDNumber varbinary(128); 
GO

-- Open the symmetric key with which to encrypt the data.
OPEN SYMMETRIC KEY SSN_Key_01
   DECRYPTION BY CERTIFICATE HumanResources037;

-- Encrypt the value in column NationalIDNumber with symmetric 
-- key SSN_Key_01. Save the result in column EncryptedNationalIDNumber.
UPDATE HumanResources.Employee
SET EncryptedNationalIDNumber = EncryptByKey(Key_GUID('SSN_Key_01'), NationalIDNumber);
GO

-- Verify the encryption.
-- First, open the symmetric key with which to decrypt the data.
OPEN SYMMETRIC KEY SSN_Key_01
   DECRYPTION BY CERTIFICATE HumanResources037;
GO

-- Now list the original ID, the encrypted ID, and the 
-- decrypted ciphertext. If the decryption worked, the original
-- and the decrypted ID will match.
SELECT NationalIDNumber, EncryptedNationalIDNumber 
    AS 'Encrypted ID Number',
    CONVERT(nvarchar, DecryptByKey(EncryptedNationalIDNumber)) 
    AS 'Decrypted ID Number'
    FROM HumanResources.Employee;
GO
5
дададзена
Я дадаў некаторыя прыклады і спасылкі, але прыклады даволі лёгка знайсці з дапамогай пошуку.
дададзена аўтар CAbbott, крыніца
Ці можаце вы даць мне просты прыклад?
дададзена аўтар AD AD, крыніца
Я код зашыфраваць радок, і я хачу eqwivilent на SQL вы можаце мне дапамагчы? і як я магу адправіць яго для вас?
дададзена аўтар AD AD, крыніца
У мяне ёсць рэдагаваць пост і цяпер ён змяшчае мой код шыфравання
дададзена аўтар AD AD, крыніца

як C# і SQL можна выкарыстоўваць патройныя метады шыфравання DES, але я б, верагодна, выбраць адно месца, каб зрабіць абодва. калі не патрабуецца як преформ яго па нейкай прычыне. см гэта прыклад таго, як выкарыстоўваць шыфраванне на ўзроўні SQL

0
дададзена