Profil de 立青立青PhotosBlogListesPlus Outils Aide

Blog


29 janvier

用VB.NET编写DES加密程序

在VB.NET中编写DEC加密程序是很容易的事情,因为VB.NET的类库中就自带了相应的函数,下面分别是加密函数和解密函数。
加密函数:
Public Shared Function Encrypt(ByVal pToEncrypt As String, ByVal sKey As String) As String
        Dim des As New DESCryptoServiceProvider()
        Dim inputByteArray() As Byte
        inputByteArray = Encoding.Default.GetBytes(pToEncrypt)
        ''建立加密对象的密钥和偏移量
        ''原文使用ASCIIEncoding.ASCII方法的GetBytes方法
        ''使得输入密码必须输入英文文本
        des.Key = ASCIIEncoding.ASCII.GetBytes(sKey)
        des.IV = ASCIIEncoding.ASCII.GetBytes(sKey)
        ''写二进制数组到加密流
        ''(把内存流中的内容全部写入)
        Dim ms As New System.IO.MemoryStream()
        Dim cs As New CryptoStream(ms, des.CreateEncryptor, CryptoStreamMode.Write)
        ''写二进制数组到加密流
        ''(把内存流中的内容全部写入)
        cs.Write(inputByteArray, 0, inputByteArray.Length)
        cs.FlushFinalBlock()
        ''建立输出字符串    
        Dim ret As New StringBuilder()
        Dim b As Byte
        For Each b In ms.ToArray()
            ret.AppendFormat("{0:X2}", b)
        Next
        Return ret.ToString()
    End Function
-----------------------------------------------------------------------
解密函数:
Public Shared Function Decrypt(ByVal pToDecrypt As String, ByVal sKey As String) As String
        Dim des As New DESCryptoServiceProvider()
        ''把字符串放入byte数组
        Dim len As Integer
        len = pToDecrypt.Length / 2 - 1
        Dim inputByteArray(len) As Byte
        Dim x, i As Integer
        For x = 0 To len
            i = Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16)
            inputByteArray(x) = CType(i, Byte)
        Next
        ''建立加密对象的密钥和偏移量,此值重要,不能修改
        des.Key = ASCIIEncoding.ASCII.GetBytes(sKey)
        des.IV = ASCIIEncoding.ASCII.GetBytes(sKey)
        Dim ms As New System.IO.MemoryStream()
        Dim cs As New CryptoStream(ms, des.CreateDecryptor, CryptoStreamMode.Write)
        cs.Write(inputByteArray, 0, inputByteArray.Length)
        cs.FlushFinalBlock()
        Return Encoding.Default.GetString(ms.ToArray)
    End Function
-----------------------------------------------
两个函数中第一个参数是待加密或解密的字符串,sKey是使用的密钥,必须是8位,使用的时候要注意哦,不然会出错的。
28 janvier

如何在视图中使用ORDER BY

SQL语句要求视图是不可以有过于复杂的查找的,而且ORDER BY原算在了里面,可是这个关键字又十分常用,那么通过如下操作可以在视图中使用ORDER BY。
关键字TOP可以解决这个问题。SELECT TOP 1 * FROM TEST这个SQL可以返回从表TEST中查到了第一条数据。同理TOP 10就可以查到前10条,而TOP 100 PERCENT就可以查到所有的数据,而TOP 50 PERCENT可以查到前50%的。如果在视图的查询语句中需要使用到ORDER BY,那么在加上TOP 100 PERCENT就可以了。比如CREATE VIEW TESTVIEW AS SELECT TOP 100 PERCENT * FROM TEST。