Encryption.vb
上传用户:wj57717022
上传日期:2014-12-16
资源大小:4093k
文件大小:3k
源码类别:

医药行业

开发平台:

Visual Basic

  1. Imports System.Security
  2. Imports System.Security.Cryptography
  3. Imports System.Text
  4. Imports Microsoft.Win32
  5. 'sKey输入密码的时候,必须使用英文字符,区分大小写,且字符数量是8个,不能多也不能少,否则出错
  6. Public Class Encryption
  7.     Public Shared Function Encrypt(ByVal pToEncrypt As String, ByVal sKey As String) As String
  8.         Dim des As New DESCryptoServiceProvider
  9.         Dim inputByteArray() As Byte
  10.         inputByteArray = Encoding.Default.GetBytes(pToEncrypt)
  11.         ''建立加密对象的密钥和偏移量
  12.         ''原文使用ASCIIEncoding.ASCII方法的GetBytes方法
  13.         ''使得输入密码必须输入英文文本
  14.         des.Key = ASCIIEncoding.ASCII.GetBytes(sKey)
  15.         des.IV = ASCIIEncoding.ASCII.GetBytes(sKey)
  16.         ''写二进制数组到加密流
  17.         ''(把内存流中的内容全部写入)
  18.         Dim ms As New System.IO.MemoryStream
  19.         Dim cs As New CryptoStream(ms, des.CreateEncryptor, CryptoStreamMode.Write)
  20.         ''写二进制数组到加密流
  21.         ''(把内存流中的内容全部写入)
  22.         cs.Write(inputByteArray, 0, inputByteArray.Length)
  23.         cs.FlushFinalBlock()
  24.         ''建立输出字符串     
  25.         Dim ret As New StringBuilder
  26.         Dim b As Byte
  27.         For Each b In ms.ToArray()
  28.             ret.AppendFormat("{0:X2}", b)
  29.         Next
  30.         Return ret.ToString()
  31.     End Function
  32.     ''解密方法
  33.     Public Shared Function Decrypt(ByVal pToDecrypt As String, ByVal sKey As String) As String
  34.         Dim des As New DESCryptoServiceProvider
  35.         ''把字符串放入byte数组
  36.         Dim len As Integer
  37.         len = pToDecrypt.Length / 2 - 1
  38.         Dim inputByteArray(len) As Byte
  39.         Dim x, i As Integer
  40.         For x = 0 To len
  41.             i = Convert.ToInt32(pToDecrypt.Substring(x * 2, 2), 16)
  42.             inputByteArray(x) = CType(i, Byte)
  43.         Next
  44.         ''建立加密对象的密钥和偏移量,此值重要,不能修改
  45.         des.Key = ASCIIEncoding.ASCII.GetBytes(sKey)
  46.         des.IV = ASCIIEncoding.ASCII.GetBytes(sKey)
  47.         Dim ms As New System.IO.MemoryStream
  48.         Dim cs As New CryptoStream(ms, des.CreateDecryptor, CryptoStreamMode.Write)
  49.         cs.Write(inputByteArray, 0, inputByteArray.Length)
  50.         cs.FlushFinalBlock()
  51.         Return Encoding.Default.GetString(ms.ToArray)
  52.     End Function
  53.     Public Shared Function readregedit() As Boolean
  54.         Dim State As RegistryKey
  55.         State = Registry.LocalMachine.OpenSubKey("SOFTWAREJxcDFT StudioRegister")
  56.         Try
  57.             Dim StateValue As String
  58.             '注意:注册表值取分大小写
  59.             StateValue = State.GetValue("State")
  60.             If StateValue = "Yes" Then
  61.                 Return True
  62.             End If
  63.         Catch
  64.         End Try
  65.     End Function
  66.     Private Declare Function GetVolumeInformation Lib "kernel32" Alias "GetVolumeInformationA" _
  67. (ByVal lpRootPathName As String, ByVal lpVolumeNameBuffer As String, ByVal nVolumeNameSize As Integer, ByRef lpVolumeSerialNumber As Long, ByVal lpMaximumComponentLength As Integer, ByVal lpFileSystemFlags As Integer, ByVal lpFileSystemNameBuffer As String, ByVal nFileSystemNameSize As Integer) As Integer
  68. End Class