FromBase64Transform 类 
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
从 Base 64 转换 CryptoStream。
public ref class FromBase64Transform : IDisposable, System::Security::Cryptography::ICryptoTransformpublic ref class FromBase64Transform : System::Security::Cryptography::ICryptoTransformpublic class FromBase64Transform : IDisposable, System.Security.Cryptography.ICryptoTransformpublic class FromBase64Transform : System.Security.Cryptography.ICryptoTransform[System.Runtime.InteropServices.ComVisible(true)]
public class FromBase64Transform : System.Security.Cryptography.ICryptoTransformtype FromBase64Transform = class
    interface IDisposable
    interface ICryptoTransformtype FromBase64Transform = class
    interface ICryptoTransform
    interface IDisposable[<System.Runtime.InteropServices.ComVisible(true)>]
type FromBase64Transform = class
    interface ICryptoTransform
    interface IDisposablePublic Class FromBase64Transform
Implements ICryptoTransform, IDisposablePublic Class FromBase64Transform
Implements ICryptoTransform- 继承
- 
				FromBase64Transform
- 属性
- 实现
示例
以下示例将 base 64 编码的文件解码为输出文本文件。
using System;
using System.IO;
using System.Security.Cryptography;
class Members
{
    [STAThread]
    static void Main(string[] args)
    {
        string appPath = (System.IO.Directory.GetCurrentDirectory() );
        appPath = appPath + "..\\\\..\\\\..\\";
        // Insert your file names into this method call.
        EncodeFromFile(appPath + "program.cs", appPath + "code.enc");
        DecodeFromFile(appPath + "code.enc", appPath + "roundtrip.txt");
    }
    // Read in the specified source file and write out an encoded target file.
    private static void EncodeFromFile(string sourceFile, string targetFile) 
    {
        // Verify members.cs exists at the specified directory.
        if (!File.Exists(sourceFile))
        {
            Console.Write("Unable to locate source file located at ");
            Console.WriteLine(sourceFile + ".");
            Console.Write("Please correct the path and run the ");
            Console.WriteLine("sample again.");
            return;
        }
        // Retrieve the input and output file streams.
        using (FileStream inputFileStream =
            new FileStream(sourceFile, FileMode.Open, FileAccess.Read))
        {
            using (FileStream outputFileStream =
                new FileStream(targetFile, FileMode.Create, FileAccess.Write))
            {
                // Create a new ToBase64Transform object to convert to base 64.
                ToBase64Transform base64Transform = new ToBase64Transform();
                // Create a new byte array with the size of the output block size.
                byte[] outputBytes = new byte[base64Transform.OutputBlockSize];
                // Retrieve the file contents into a byte array.
                byte[] inputBytes = new byte[inputFileStream.Length];
                inputFileStream.Read(inputBytes, 0, inputBytes.Length);
                // Verify that multiple blocks can not be transformed.
                if (!base64Transform.CanTransformMultipleBlocks)
                {
                    // Initialize the offset size.
                    int inputOffset = 0;
                    // Iterate through inputBytes transforming by blockSize.
                    int inputBlockSize = base64Transform.InputBlockSize;
                    while (inputBytes.Length - inputOffset > inputBlockSize)
                    {
                        base64Transform.TransformBlock(
                            inputBytes,
                            inputOffset,
                            inputBytes.Length - inputOffset,
                            outputBytes,
                            0);
                        inputOffset += base64Transform.InputBlockSize;
                        outputFileStream.Write(
                            outputBytes,
                            0,
                            base64Transform.OutputBlockSize);
                    }
                    // Transform the final block of data.
                    outputBytes = base64Transform.TransformFinalBlock(
                        inputBytes,
                        inputOffset,
                        inputBytes.Length - inputOffset);
                    outputFileStream.Write(outputBytes, 0, outputBytes.Length);
                    Console.WriteLine("Created encoded file at " + targetFile);
                }
                // Determine if the current transform can be reused.
                if (!base64Transform.CanReuseTransform)
                {
                    // Free any used resources.
                    base64Transform.Clear();
                }
            }
        }
    }
        public static void DecodeFromFile(string inFileName, string outFileName)
        {
            using (FromBase64Transform myTransform = new FromBase64Transform(FromBase64TransformMode.IgnoreWhiteSpaces))
            {
                byte[] myOutputBytes = new byte[myTransform.OutputBlockSize];
                // Open the input and output files.
                using (FileStream myInputFile = new FileStream(inFileName, FileMode.Open, FileAccess.Read))
                {
                    using (FileStream myOutputFile = new FileStream(outFileName, FileMode.Create, FileAccess.Write))
                    {
                        // Retrieve the file contents into a byte array. 
                        byte[] myInputBytes = new byte[myInputFile.Length];
                        myInputFile.Read(myInputBytes, 0, myInputBytes.Length);
                        // Transform the data in chunks the size of InputBlockSize. 
                        int i = 0;
                        while (myInputBytes.Length - i > 4/*myTransform.InputBlockSize*/)
                        {
                            int bytesWritten = myTransform.TransformBlock(myInputBytes, i, 4/*myTransform.InputBlockSize*/, myOutputBytes, 0);
                            i += 4/*myTransform.InputBlockSize*/;
                            myOutputFile.Write(myOutputBytes, 0, bytesWritten);
                        }
                        // Transform the final block of data.
                        myOutputBytes = myTransform.TransformFinalBlock(myInputBytes, i, myInputBytes.Length - i);
                        myOutputFile.Write(myOutputBytes, 0, myOutputBytes.Length);
                        // Free up any used resources.
                        myTransform.Clear();
                    }
                }
            }
        }
}
Imports System.IO
Imports System.Security.Cryptography
Friend Class Members
    <STAThread()> _
    Shared Sub Main(ByVal args() As String)
        Dim appPath As String = (System.IO.Directory.GetCurrentDirectory())
        appPath = appPath & "..\\..\\..\"
        ' Insert your file names into this method call.
        EncodeFromFile(appPath & "program.vb", appPath & "code.enc")
        DecodeFromFile(appPath & "code.enc", appPath & "roundtrip.txt")
    End Sub
    ' Read in the specified source file and write out an encoded target file.
    Private Shared Sub EncodeFromFile(ByVal sourceFile As String, ByVal targetFile As String)
        ' Verify members.cs exists at the specified directory.
        If Not File.Exists(sourceFile) Then
            Console.Write("Unable to locate source file located at ")
            Console.WriteLine(sourceFile & ".")
            Console.Write("Please correct the path and run the ")
            Console.WriteLine("sample again.")
            Return
        End If
        ' Retrieve the input and output file streams.
        Using inputFileStream As New FileStream(sourceFile, FileMode.Open, FileAccess.Read)
            Using outputFileStream As New FileStream(targetFile, FileMode.Create, FileAccess.Write)
                ' Create a new ToBase64Transform object to convert to base 64.
                Dim base64Transform As New ToBase64Transform()
                ' Create a new byte array with the size of the output block size.
                Dim outputBytes(base64Transform.OutputBlockSize - 1) As Byte
                ' Retrieve the file contents into a byte array.
                Dim inputBytes(inputFileStream.Length - 1) As Byte
                inputFileStream.Read(inputBytes, 0, inputBytes.Length)
                ' Verify that multiple blocks can not be transformed.
                If Not base64Transform.CanTransformMultipleBlocks Then
                    ' Initializie the offset size.
                    Dim inputOffset As Integer = 0
                    ' Iterate through inputBytes transforming by blockSize.
                    Dim inputBlockSize As Integer = base64Transform.InputBlockSize
                    Do While inputBytes.Length - inputOffset > inputBlockSize
                        base64Transform.TransformBlock(inputBytes, inputOffset, inputBytes.Length - inputOffset, outputBytes, 0)
                        inputOffset += base64Transform.InputBlockSize
                        outputFileStream.Write(outputBytes, 0, base64Transform.OutputBlockSize)
                    Loop
                    ' Transform the final block of data.
                    outputBytes = base64Transform.TransformFinalBlock(inputBytes, inputOffset, inputBytes.Length - inputOffset)
                    outputFileStream.Write(outputBytes, 0, outputBytes.Length)
                    Console.WriteLine("Created encoded file at " & targetFile)
                End If
                ' Determine if the current transform can be reused.
                If Not base64Transform.CanReuseTransform Then
                    ' Free up any used resources.
                    base64Transform.Clear()
                End If
            End Using
        End Using
    End Sub
    Public Shared Sub DecodeFromFile(ByVal inFileName As String, ByVal outFileName As String)
        Using myTransform As New FromBase64Transform(FromBase64TransformMode.IgnoreWhiteSpaces)
            Dim myOutputBytes(myTransform.OutputBlockSize - 1) As Byte
            'Open the input and output files.
            Using myInputFile As New FileStream(inFileName, FileMode.Open, FileAccess.Read)
                Using myOutputFile As New FileStream(outFileName, FileMode.Create, FileAccess.Write)
                    'Retrieve the file contents into a byte array. 
                    Dim myInputBytes(myInputFile.Length - 1) As Byte
                    myInputFile.Read(myInputBytes, 0, myInputBytes.Length)
                    'Transform the data in chunks the size of InputBlockSize. 
                    Dim i As Integer = 0
                    Do While myInputBytes.Length - i > 4 'myTransform.InputBlockSize
                        Dim bytesWritten As Int32 = myTransform.TransformBlock(myInputBytes, i, 4, myOutputBytes, 0) 'myTransform.InputBlockSize
                        i += 4 'myTransform.InputBlockSize
                        myOutputFile.Write(myOutputBytes, 0, bytesWritten)
                    Loop
                    'Transform the final block of data.
                    myOutputBytes = myTransform.TransformFinalBlock(myInputBytes, i, myInputBytes.Length - i)
                    myOutputFile.Write(myOutputBytes, 0, myOutputBytes.Length)
                    'Free up any used resources.
                    myTransform.Clear()
                End Using
            End Using
        End Using
    End Sub
End Class
注解
Base 64 内容传输编码以人类不可读的形式表示任意位序列。
构造函数
| FromBase64Transform() | 初始化 FromBase64Transform 类的新实例。 | 
| FromBase64Transform(FromBase64TransformMode) | 使用指定的转换模式初始化 FromBase64Transform 类的新实例。 | 
属性
| CanReuseTransform | 获取一个值,该值指示是否可重复使用当前转换。 | 
| CanTransformMultipleBlocks | 获取一个值,该值指示是否可转换多个块。 | 
| InputBlockSize | 获取输入块大小。 | 
| OutputBlockSize | 获取输出块大小。 | 
方法
| Clear() | 释放由 FromBase64Transform 使用的所有资源。 | 
| Dispose() | 释放 FromBase64Transform 类的当前实例所使用的所有资源。 | 
| Dispose(Boolean) | 释放由 FromBase64Transform 占用的非托管资源,还可以另外再释放托管资源。 | 
| Equals(Object) | 确定指定对象是否等于当前对象。(继承自 Object) | 
| Finalize() | 释放 FromBase64Transform 使用的非托管资源。 | 
| GetHashCode() | 作为默认哈希函数。(继承自 Object) | 
| GetType() | 获取当前实例的 Type。(继承自 Object) | 
| MemberwiseClone() | 创建当前 Object 的浅表副本。(继承自 Object) | 
| ToString() | 返回表示当前对象的字符串。(继承自 Object) | 
| TransformBlock(Byte[], Int32, Int32, Byte[], Int32) | 将输入字节数组的指定区域从 Base 64 进行转换,并将结果复制到输出字节数组的指定区域。 | 
| TransformFinalBlock(Byte[], Int32, Int32) | 从 base 64 转换指定字节数组的指定区域。 | 
显式接口实现
| IDisposable.Dispose() | 释放由 FromBase64Transform 占用的非托管资源,还可以另外再释放托管资源。 |