密码学的历史可以追溯到古埃及和古希腊时期,当时使用的是简单的替代密码和移位密码。随着计算机和网络技术的发展,密码学也发展成为一门重要的科学。
20世纪50年代,数学家科尔·贝尔发明了第一种数学原理上安全的密码算法- RSA算法。这个算法基于数论的难题,使用非对称密钥加密,在安全性和效率上都得到了很大的提高。
70年代,已经有了许多基于对称密钥的加密算法,如 DES,但是这些算法的密钥长度较短,安全性较低。
80年代,非对称密钥算法和对称密钥算法相结合的算法如 RSA 和 DES 的组合算法出现。
90年代,AES(高级加密标准)算法诞生,这是一种基于对称密钥的算法,密钥长度更长,安全性更高。
加密算法通常无需自己编写,常见的密码算法开源库包括:
- OpenSSL – 支持多种密码算法,如 AES, DES, RSA, ECC 等。
- libsodium – 一个轻量级的密码算法库,支持加密、解密、签名、验签、密钥交换等操作。
- Botan – 一个多算法的密码库,支持常见的密码算法,如 AES, DES, RSA, ECC 等。
- Crypto++ – 一个功能强大的密码算法库,支持多种密码算法,如 AES, DES, RSA, ECC 等。
- pycrypto – python 的密码算法库,支持常见的密码算法,如 AES, DES, RSA, ECC 等。
除了上述 这些开源算法,Windows操作系统提供了多种加密API供开发人员使用,其中一些常用的加密API如下:
- CryptoAPI:这是Windows操作系统内置的加密API,支持常见的对称加密算法和非对称加密算法,如 AES, DES, RSA, ECC 等。
- CNG(Cryptography Next Generation) API:这是Windows Vista及更高版本提供的加密API,支持更多的加密算法和更高级的加密特性,并且兼容CryptoAPI。
- Windows Data Protection API(DPAPI):这是Windows提供的用于保护本地数据的API,可以用于加密文件和密码。
- Windows Hello: Windows Hello 是 Windows 10 内置的生物识别技术,支持指纹识别,面部识别和眼睛识别,可以用于验证用户的身份。
这些API都有自己的特点和适用场景,开发人员可以根据需要选择使用。
在C#中调用Windows加密API可以使用Win32 API或者.NET Framework中的类库来实现。例如,下面是使用CryptoAPI进行文件加密的示例代码:
[DllImport(“advapi32.dll”, SetLastError = true)]
public static extern bool CryptAcquireContext(
ref IntPtr hProv,
string pszContainer,
string pszProvider,
int dwProvType,
uint dwFlags);
[DllImport(“advapi32.dll”, SetLastError = true)]
public static extern bool CryptCreateHash(
IntPtr hProv,
int algId,
IntPtr hKey,
uint dwFlags,
ref IntPtr phHash);
[DllImport(“advapi32.dll”, SetLastError = true)]
public static extern bool CryptHashData(
IntPtr hHash,
byte[] pbData,
int dwDataLen,
uint dwFlags);
[DllImport(“advapi32.dll”, SetLastError = true)]
public static extern bool CryptDeriveKey(
IntPtr hProv,
int algId,
IntPtr hBaseData,
uint dwFlags,
ref IntPtr phKey);
[DllImport(“advapi32.dll”, SetLastError = true)]
public static extern bool CryptEncrypt(
IntPtr hKey,
IntPtr hHash,
bool final,
uint dwFlags,
byte[] pbData,
ref int pdwDataLen,
int dwBufLen);
[DllImport(“advapi32.dll”, SetLastError = true)]
public static extern bool CryptDecrypt(
IntPtr hKey,
IntPtr hHash,
bool final,
uint dwFlags,
byte[] pbData,
ref int pdwDataLen);
[DllImport(“advapi32.dll”, SetLast
在VB中调用Windows加密API可以使用Win32 API或者.NET Framework中的类库来实现
使用Win32 API,可以使用 Declare 关键字来定义并调用Windows加密API。例如,下面是使用CryptoAPI进行文件加密的示例代码:
Private Declare Function CryptAcquireContext Lib “advapi32.dll” Alias “CryptAcquireContextA” (ByRef phProv As Long, ByVal pszContainer As String, ByVal pszProvider As String, ByVal dwProvType As Long, ByVal dwFlags As Long) As Long
Private Declare Function CryptCreateHash Lib “advapi32.dll” (ByVal hProv As Long, ByVal Algid As Long, ByVal hKey As Long, ByVal dwFlags As Long, ByRef phHash As Long) As Long
Private Declare Function CryptHashData Lib “advapi32.dll” (ByVal hHash As Long, ByVal pbData As String, ByVal dwDataLen As Long, ByVal dwFlags As Long) As Long
Private Declare Function CryptDeriveKey Lib “advapi32.dll” (ByVal hProv As Long, ByVal Algid As Long, ByVal hBaseData As Long, ByVal dwFlags As Long, ByRef phKey As Long) As Long
Private Declare Function CryptEncrypt Lib “advapi32.dll” (ByVal hKey As Long, ByVal hHash As Long, ByVal Final As Long, ByVal dwFlags As Long, ByVal pbData As String, ByRef pdwDataLen As Long, ByVal dwBufLen As Long) As Long
Private Declare Function CryptDecrypt Lib “advapi32.dll” (ByVal hKey As Long, ByVal hHash As Long, ByVal Final As Long, ByVal dwFlags As Long, ByVal pbData As String, ByRef pdwDataLen As Long) As Long
Private Declare Function CryptReleaseContext Lib “advapi32.dll” (ByVal hProv As Long, ByVal dwFlags As Long) As Long
使用.NET Framework中的类库,可以使用 System.Security.Cryptography 命名空间中的类和方法来实现加密。例如,下面是使用AES算法进行文件加密的示例代码:
Dim AES As New System.Security.Cryptography.AesCryptoServiceProvider
AES.Key = System.Text.Encoding.ASCII.GetBytes(“YourKey”)
AES.IV = System.Text.Encoding.ASCII.GetBytes(“YourIV”)
‘ Encryption
Dim encryptor As System.Security.Cryptography.ICryptoTransform = AES.CreateEncryptor()
Using msEncrypt As New System.IO.
★关于WorkWin公司电脑监控软件★
WorkWin的使命是打造Work用途的Windows 电脑系统,有效规范员工上网行为,让老板知道员工每天在做什么(监控包括屏幕、上网在内的一举一动),限制员工不能做什么(禁止网购、游戏、优盘等)。
WorkWin基于纯软件设计,非常容易使用,无需添加或改动任何硬件,使用一台管理机监控全部员工机电脑。历经南京网亚十余年精心打造,此时此刻每天都有成千上万企业电脑正在运行WorkWin,选择WorkWin选择“赢”。
版权所有,南京网亚计算机有限公司 。本文链接地址: C# 、VB调用Windows自带的加密算法API