Mercurial > mercurial > hgweb_rsearcher.cgi
diff go/crypto.go @ 5:e3b10fb860b3
release v1.0.
author | pyon@macmini |
---|---|
date | Mon, 22 Oct 2018 22:17:02 +0900 |
parents | db4813125eb8 |
children | f5ffc34f045a |
line wrap: on
line diff
--- a/go/crypto.go Mon Oct 15 20:07:38 2018 +0900 +++ b/go/crypto.go Mon Oct 22 22:17:02 2018 +0900 @@ -1,7 +1,7 @@ /* crypto.go : crypto-program. Version : 0.0 - Last Change: 2018-10-11 木 13:54:56. + Last Change: 2018-10-19 金 15:58:10. install to: rsearcher_root/ server_root/ @@ -23,25 +23,40 @@ "os" ) +var version string + +func init() { + version = "1.0" +} + func main() { salt := flag.String( "s", "dummysalt", "salt." ) - enca := flag.String( "a", "", "encrypt plaintext." ) encb := flag.String( "b", "", "encrypt csv-file." ) coll := flag.String( "c", "", "collate user/password." ) - decr := flag.String( "d", "", "deecrypt hhs." ) + key := flag.String( "k", "1234567890abcdef1234567890abcdef", "key" ) // len = 32 encr := flag.String( "e", "", "encrypt hhs." ) + decr := flag.String( "d", "", "decrypt hhs." ) ghhs := flag.String( "f", "", "get hhs info." ) + pver := flag.Bool( "v", false, "print version." ) + flag.Parse() + if *pver { + fmt.Println( "crypto [", version, "]" ) + os.Exit( 0 ) + } + + /* Hash ( 1 word ) */ if *enca != "" { buf := *salt + enc_sha256( *enca ) + *salt fmt.Println( enc_sha256( buf ) ) os.Exit( 0 ) // done. } + /* Hash ( csv ) */ if *encb != "" { f, err := os.Open( *encb ); if err != nil { log.Fatal( err ) @@ -63,6 +78,7 @@ os.Exit( 0 ) // done. } + /* Password Check */ if *coll != "" { f, err := os.Open( *coll ); if err != nil { log.Fatal( err ) @@ -98,50 +114,20 @@ os.Exit( 0 ) // done. } - key, _ := hex.DecodeString( "f368616e676520746869732070617373" ) // len = 32 + /* Encrypto & Decrypto */ + k, _ := hex.DecodeString( *key ) // len = 32 + block, err := aes.NewCipher( k ) + if err != nil { + panic( err ) + } - if *decr != "" { - f, err := os.Open( *decr ); if err != nil { - log.Fatal( err ) - } - defer f.Close() - - ciphertext, err := ioutil.ReadAll( f ) + // encrypto file + if *encr != "" { + plaintext, err := ioutil.ReadFile( *encr ) // 入力CSVは S-JIS if err != nil { log.Fatal( err ) } - block, err := aes.NewCipher( key ) - if err != nil { - panic( err ) - } - - iv := ciphertext[ :aes.BlockSize ] - plaintext := make( []byte, len( ciphertext ) - aes.BlockSize ) - stream := cipher.NewCTR( block, iv ) - stream.XORKeyStream( plaintext, ciphertext[ aes.BlockSize: ] ) - - fmt.Printf( "%s", plaintext ) - os.Exit( 0 ) - } - - - if *encr != "" { - f, err := os.Open( *encr ); if err != nil { - log.Fatal( err ) - } - defer f.Close() - - plaintext, err := ioutil.ReadAll( f ) - if err != nil { - log.Fatal( err ) - } - - block, err := aes.NewCipher( key ) - if err != nil { - panic( err ) - } - // IV は公開してもいいので先頭につけておく ciphertext := make( []byte, aes.BlockSize + len( plaintext ) ) iv := ciphertext[ :aes.BlockSize ] @@ -152,17 +138,37 @@ stream := cipher.NewCTR( block, iv ) stream.XORKeyStream( ciphertext[ aes.BlockSize: ], plaintext ) - fmt.Printf( "%x", ciphertext ) + fmt.Printf( "%s", ciphertext ) os.Exit( 0 ) } - if *ghhs != "" { + // decrypt file + if *decr != "" { + ciphertext, err := ioutil.ReadFile( *decr ) + if err != nil { + log.Fatal( err ) + } + + iv := ciphertext[ :aes.BlockSize ] + plaintext := make( []byte, len( ciphertext[ aes.BlockSize: ] ) ) + stream := cipher.NewCTR( block, iv ) + stream.XORKeyStream( plaintext, ciphertext[ aes.BlockSize: ] ) + + fmt.Printf( "%s", plaintext ) + os.Exit( 0 ) } + /* Etc */ + if *ghhs != "" { + os.Exit( 0 ) + } + + /* Error */ fmt.Fprintf( os.Stderr, "bad argument\n" ) os.Exit( 1 ) } +/* Hash Function */ func enc_sha256( text string ) string { h := sha256.New() h.Write( []byte( text ) )