TripleDES 类
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示三重数据加密标准算法的基类,TripleDES 的所有实现都必须从此基类派生。
public ref class TripleDES abstract : System::Security::Cryptography::SymmetricAlgorithm
public abstract class TripleDES : System.Security.Cryptography.SymmetricAlgorithm
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public abstract class TripleDES : System.Security.Cryptography.SymmetricAlgorithm
[System.Runtime.InteropServices.ComVisible(true)]
public abstract class TripleDES : System.Security.Cryptography.SymmetricAlgorithm
type TripleDES = class
inherit SymmetricAlgorithm
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
type TripleDES = class
inherit SymmetricAlgorithm
[<System.Runtime.InteropServices.ComVisible(true)>]
type TripleDES = class
inherit SymmetricAlgorithm
Public MustInherit Class TripleDES
Inherits SymmetricAlgorithm
- 继承
- 派生
- 属性
下面的代码示例方法使用 TripleDESCryptoServiceProvider 具有指定密钥 (Key) 和初始化向量 () IV 来加密 指定的 inName
文件。 然后,它将加密的结果输出到 指定的 outName
文件。
void EncryptData( String^ inName, String^ outName, array<Byte>^tdesKey, array<Byte>^tdesIV )
{
//Create the file streams to handle the input and output files.
FileStream^ fin = gcnew FileStream( inName,FileMode::Open,FileAccess::Read );
FileStream^ fout = gcnew FileStream( outName,FileMode::OpenOrCreate,FileAccess::Write );
fout->SetLength( 0 );
//Create variables to help with read and write.
array<Byte>^bin = gcnew array<Byte>(100);
long rdlen = 0; //This is the total number of bytes written.
long totlen = (long)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 = gcnew TripleDESCryptoServiceProvider;
CryptoStream^ encStream = gcnew 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();
}
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();
}
Private Shared Sub EncryptData(inName As String, outName As String, _
tdesKey() As Byte, tdesIV() As Byte)
'Create the file streams to handle the input and output files.
Dim fin As New FileStream(inName, FileMode.Open, FileAccess.Read)
Dim fout As New FileStream(outName, FileMode.OpenOrCreate, _
FileAccess.Write)
fout.SetLength(0)
'Create variables to help with read and write.
Dim bin(100) As Byte 'This is intermediate storage for the encryption.
Dim rdlen As Long = 0 'This is the total number of bytes written.
Dim totlen As Long = fin.Length 'This is the total length of the input file.
Dim len As Integer 'This is the number of bytes to be written at a time.
Dim tdes As New TripleDESCryptoServiceProvider()
Dim encStream As 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)
End While
encStream.Close()
End Sub
可以采用相同的方式处理解密:使用 CreateDecryptor 而不是 CreateEncryptor。 () Key 和初始化向量 (IV 用于加密文件的密钥) 必须用于解密该文件。
TripleDES 使用算法的 DES 三次连续迭代。 它可以使用两个或三个 56 位密钥。
此算法支持从 128 位到 192 位的密钥长度,增量为 64 位。
TripleDES() |
初始化 TripleDES 类的新实例。 |
Block |
表示加密操作的块大小(以位为单位)。 (继承自 SymmetricAlgorithm) |
Feedback |
表示加密操作的反馈大小(以位为单位)。 (继承自 SymmetricAlgorithm) |
IVValue |
表示对称算法的初始化向量 (IV)。 (继承自 SymmetricAlgorithm) |
Key |
表示对称算法使用的密钥的大小(以位为单位)。 (继承自 SymmetricAlgorithm) |
Key |
表示对称算法的密钥。 (继承自 SymmetricAlgorithm) |
Legal |
指定对称算法支持的块大小(以位为单位)。 (继承自 SymmetricAlgorithm) |
Legal |
指定对称算法支持的密钥大小(以位为单位)。 (继承自 SymmetricAlgorithm) |
Mode |
表示对称算法中使用的密码模式。 (继承自 SymmetricAlgorithm) |
Padding |
表示对称算法中使用的填充模式。 (继承自 SymmetricAlgorithm) |
Block |
获取或设置加密操作的块大小(以位为单位)。 (继承自 SymmetricAlgorithm) |
Feedback |
获取或设置针对密码反馈 (CFB) 和输出反馈 (OFB) 密码模式的加密操作的反馈大小(以位为单位)。 (继承自 SymmetricAlgorithm) |
IV |
获取或设置对称算法的初始化向量 (IV)。 (继承自 SymmetricAlgorithm) |
Key |
获取或设置 TripleDES 算法的密钥。 |
Key |
获取或设置对称算法所用密钥的大小(以位为单位)。 (继承自 SymmetricAlgorithm) |
Legal |
获取对称算法支持的块大小(以位为单位)。 |
Legal |
获取对称算法支持的块大小(以位为单位)。 (继承自 SymmetricAlgorithm) |
Legal |
获取对称算法支持的密钥大小(以位为单位)。 |
Legal |
获取对称算法支持的密钥大小(以位为单位)。 (继承自 SymmetricAlgorithm) |
Mode |
获取或设置对称算法的运算模式。 (继承自 SymmetricAlgorithm) |
Padding |
获取或设置对称算法中使用的填充模式。 (继承自 SymmetricAlgorithm) |
IDisposable. |
此 API 支持产品基础结构,不能在代码中直接使用。 释放由 SymmetricAlgorithm 占用的非托管资源,还可以另外再释放托管资源。 (继承自 SymmetricAlgorithm) |
产品 | 版本 |
---|---|
.NET | Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10 |
.NET Framework | 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1 |
.NET Standard | 1.3, 1.4, 1.6, 2.0, 2.1 |