<commit_before># 9.6 データを暗号化/復号する
前の節では安全なパスワードの保存の仕方を説明してきました。しかしあるときには、既にデータベースに保存されている、プライバシーに関わる暗号化されたデータを修正する必要があるかもしれません。データを復号することが必要な時は、既に述べた１方向ハッシュ関数の代わりに、対称鍵暗号アルゴリズムを使うべきです。

## 高度な暗号化/復号

Go言語の`crypto`では対称鍵暗号アルゴリズムをサポートしています。二種類の高度暗号化モジュールがあります。

- `crypto/aes`パッケージ:AES(Advanced Encryption Standard)は、Rijndael暗号化アルゴリズムとも呼ばれます。アメリカの連邦政府が採用しているブロック暗号の標準です。
- `crypto/des`パッケージ：DES(Data Encryption Standard)は対称鍵暗号の標準です。これは現在最も広く使用されている鍵システムです。特に金融データのセキュリティの保護で使われています。かつてアメリカ連邦政府の暗号化のスタンダードでしたがすでにAESにとってかわられています。

これら２つのアルゴリズムは使用方法が似ていますので、以下ではaesパッケージを使ってどのようにこれらのパッケージを使うのかを説明していきたいと思います。

	package main

	import (
		"crypto/aes"
		"crypto/cipher"
		"fmt"
		"os"
	)

	var commonIV = []byte{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f}

	func main() {
		// 暗号化したい文字列
		plaintext := []byte("My name is Astaxie")
		// 暗号化された文字列を渡すと、plaintは渡された文字列になります。
		if len(os.Args) > 1 {
			plaintext = []byte(os.Args[1])
		}
<commit_msg>[ja] fix typo<commit_after># 9.6 データを暗号化/復号する
前の節では安全なパスワードの保存の仕方を説明してきました。しかしあるときには、既にデータベースに保存されている、プライバシーに関わる暗号化されたデータを修正する必要があるかもしれません。データを復号することが必要な時は、既に述べた１方向ハッシュ関数の代わりに、対称鍵暗号アルゴリズムを使うべきです。

## 高度な暗号化/復号

Go言語の`crypto`では対称鍵暗号アルゴリズムをサポートしています。二種類の高度暗号化モジュールがあります。

- `crypto/aes`パッケージ:AES(Advanced Encryption Standard)は、Rijndael暗号化アルゴリズムとも呼ばれます。アメリカの連邦政府が採用しているブロック暗号の標準です。
- `crypto/des`パッケージ：DES(Data Encryption Standard)は対称鍵暗号の標準です。これは現在最も広く使用されている鍵システムです。特に金融データのセキュリティの保護で使われています。かつてアメリカ連邦政府の暗号化のスタンダードでしたがすでにAESにとってかわられています。

これら２つのアルゴリズムは使用方法が似ていますので、以下ではaesパッケージを使ってどのようにこれらのパッケージを使うのかを説明していきたいと思います。

	package main

	import (
		"crypto/aes"
		"crypto/cipher"
		"fmt"
		"os"
	)

	var commonIV = []byte{0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f}

	func main() {
		// 暗号化したい文字列
		plaintext := []byte("My name is Astaxie")
		// 暗号化された文字列を渡すと、plaintextは渡された文字列になります。
		if len(os.Args) > 1 {
			plaintext = []byte(os.Args[1])
		}

{'fraction_non_alphanumeric': 0.10813542193026782, 'fraction_numerical': 0.04850934815563416, 'mean_word_length': 7.497854077253219, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 5, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2514898', 'n_tokens_mistral': 1614, 'n_tokens_neox': 1460, 'n_words': 106}