2019年3月11日月曜日

開発環境

プログラミング言語Go (ADDISON-WESLEY PROFESSIONAL COMPUTING SERIES) (Alan A.A. Donovan(著)、Brian W. Kernighan(著)、柴田 芳樹(翻訳)、丸善出版)の第4章(コンポジット型)、4.1(配列)、練習問題4.2の解答を求めてみる。

コード

package main

import (
 "crypto/sha256"
 "crypto/sha512"
 "flag"
 "fmt"
 "io/ioutil"
 "os"
)

var intPtr = flag.Int("s", 256, "sha xxx")

func main() {
 flag.Parse()
 data, err := ioutil.ReadAll(os.Stdin)
 if err != nil {
  fmt.Fprint(os.Stderr, err)
  os.Exit(1)
 }
 switch *intPtr {
 case 384:
  fmt.Printf("%x\n", sha512.Sum384(data))
 case 512:
  fmt.Printf("%x\n", sha512.Sum512(data))
 default:
  fmt.Printf("%x\n", sha256.Sum256(data))
 }
}

入出力結果(cmd(コマンドプロンプト)、Terminal)

C:\Users\...>type input2.txt
Go
go
Golang
golang

C:\Users\...>go run sample2.go < input2.txt
3efea55c410d86fc03d18cdad7f9e6c8f8cc21061a45a8c0d435c6696117d549
C:\Users\...>go run sample2.go -s 256 < input2.txt
3efea55c410d86fc03d18cdad7f9e6c8f8cc21061a45a8c0d435c6696117d549
C:\Users\...>go run sample2.go -s 384 < input2.txt
f98389432090a11bcde2f5ba3eb0d107dc34e401dfc0600ab83c0ffe1a16713701eaf57f5c7ab8dcb725a31e0a0f5747
C:\Users\...>go run sample2.go -s 512 < input2.txt
baeae9220a87c0930942878874b36613087a8058aa9dca95ddc5ebd03b58a99d3dd83cdbe86c5cdf1ffa1363b4c047a00ce55dfa098920967c88d733e1f3d6a4
C:\Users\...>go run sample2.go -s 1024 < input2.txt
3efea55c410d86fc03d18cdad7f9e6c8f8cc21061a45a8c0d435c6696117d549

C:\Users\...>

0 コメント:

コメントを投稿