DOBON.NET DOBON.NETプログラミング掲示板過去ログ

暗号化について

分類:[.NET]

VB.NETで、テキストボックスに入力された文字(String)を簡単に暗号化したいのですが、どうすればイイでしょうか?
■No40に返信(hiroさんの記事)
> VB.NETで、テキストボックスに入力された文字(String)を簡単に暗号化したいのですが、どうすればイイでしょうか?

勝手にパスワードが不要な暗号化と解釈させていただきます。

一見暗号化されたように見える程度でよければ、Base64でエンコードするという方法があります。何回かBase64エンコードを繰り返せば、さらに効果的(?)かもしれません。

'暗号化
Dim bs() As Byte = System.Text.Encoding.GetEncoding(932).GetBytes(TextBox1.Text)
Dim result As String = System.Convert.ToBase64String(bs)
TextBox1.Text = result

'復号化
Dim bs() As Byte = System.Convert.FromBase64String(TextBox1.Text)
Dim result As String = System.Text.Encoding.GetEncoding(932).GetString(bs)
TextBox1.Text = result
■No40に返信(hiroさんの記事)
> VB.NETで、テキストボックスに入力された文字(String)を簡単に暗号化したいのですが、どうすればイイでしょうか?

お初にお目にかかります。Warlordと申します。

暗号についてですが、System.Security名前空間には興味深いクラスが潜んでいます。

下記URLはC#.NETで、文字列ではなくファイルをDESアルゴリズムを使って
暗号化するサンプルですが、VB.NETに翻訳すればちゃんと使えます(使いました)。
http://support.microsoft.com/default.aspx?scid=kb;ja;307010

他にも3DES(トリプルDES)の暗号化・複合化プロバイダもあるようなので、
いろいろお楽しみいただけるかと思います。
  • 題名: Re[2]: 暗号化について
  • 著者: opql
  • 日時: 2003/06/20 14:58:08
  • ID: 73
  • この記事の返信元:
  • この記事への返信:
    • (なし)
  • ツリーを表示
VB.Netだと以下の様になります。これを組み込めばできるのでは?

Imports System
Imports System.IO
Imports System.Security
Imports System.Security.Cryptography
Imports System.Text

Module Code
'64 ビット、8 バイトでなければなりません。
Private Const sSecretKey As String = "Password"

Public Sub Main()
EncryptFile("c:\temp\test.txt", _
"c:\temp\Encrypted.txt", _
sSecretKey)
DecryptFile("c:\temp\Encrypted.txt", _
"c:\temp\Decrypted.txt", _
sSecretKey)
End Sub

Sub EncryptFile(ByVal sInputFilename As String, _
ByVal sOutputFilename As String, _
ByVal sKey As String)

Dim fsInput As New FileStream(sInputFilename, _
FileMode.Open, FileAccess.Read)
Dim fsEncrypted As New FileStream(sOutputFilename, _
FileMode.Create, FileAccess.Write)

Dim DES As New DESCryptoServiceProvider()

'DES アルゴリズム用の秘密キーを設定します。
'このプロバイダには 64 ビット キーと IV が必要です。
DES.Key = ASCIIEncoding.ASCII.GetBytes(sKey)

'初期化ベクタを設定します。
DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey)

'このインスタンスから DES Encryptor を作成します。
Dim desencrypt As ICryptoTransform = DES.CreateEncryptor()
'DES 暗号化を使用してファイル ストリームを変換する CryptoStream を作成します。
Dim cryptostream As New CryptoStream(fsEncrypted, _
desencrypt, _
CryptoStreamMode.Write)

'ファイルのテキストをバイト配列に読み込みます。
Dim bytearrayinput(fsInput.Length - 1) As Byte
fsInput.Read(bytearrayinput, 0, bytearrayinput.Length)
'DES で暗号化されたファイルを書き出します。
cryptostream.Write(bytearrayinput, 0, bytearrayinput.Length)
cryptostream.Close()
fsEncrypted.Close()
fsInput.Close()

End Sub

Sub DecryptFile(ByVal sInputFilename As String, _
ByVal sOutputFilename As String, _
ByVal sKey As String)

Dim DES As New DESCryptoServiceProvider()
'このプロバイダには 64 ビット キーと IV が必要です。
'DES アルゴリズム用の秘密キーを設定します。
DES.Key() = ASCIIEncoding.ASCII.GetBytes(sKey)
'初期化ベクタを設定します。
DES.IV = ASCIIEncoding.ASCII.GetBytes(sKey)

'暗号化されたファイルを読み込むためのファイル ストリームを作成します。
Dim fsread As New FileStream(sInputFilename, FileMode.Open, FileAccess.Read)
'DES のインスタンスから DES Decryptor を作成します。
Dim desdecrypt As ICryptoTransform = DES.CreateDecryptor()
'受け取ったバイトに対して読み取りと DES 復号化変換を行うように設定された CryptoStream を作成します。
Dim cryptostreamDecr As New CryptoStream(fsread, desdecrypt, CryptoStreamMode.Read)
'復号化されたファイルの内容を出力します。
Dim fsDecrypted As New StreamWriter(sOutputFilename)
fsDecrypted.Write(New StreamReader(cryptostreamDecr).ReadToEnd)
fsDecrypted.Flush()
fsDecrypted.Close()
fsread.Close()

End Sub

End Module

> 勝手にパスワードが不要な暗号化と解釈させていただきます。

パスワードが必要な暗号化とはどうすればいいでしょうか?
■No81に返信(hiroさんの記事)
>
>>勝手にパスワードが不要な暗号化と解釈させていただきます。
>
> パスワードが必要な暗号化とはどうすればいいでしょうか?

Warlord さん[No71]とopql さん[No73]の例がそれだと思うのですが...。

DOBON.NET | プログラミング道 | プログラミング掲示板