commit
						1cca38f3de
					
				 4 changed files with 172 additions and 0 deletions
			
			
		| @ -0,0 +1,2 @@ | |||
| # CS5970S22 | |||
| 
 | |||
| @ -0,0 +1,28 @@ | |||
| package main | |||
| 
 | |||
| import ( | |||
| 	"crypto/md5" | |||
| 	"crypto/sha256" | |||
| 	"fmt" | |||
| ) | |||
| 
 | |||
| func main() { | |||
| 	s := "6xAg8YNc5j8ihgKcr9tGjc2Mfdlpmpfnke9NyI7i3L27GAgeVB5trbxvyKpjPkepfzNoH7Z2bTyZ0UwgYBzEGb3j4XVK0GoNit6kgkR4ZZDkXU26fG8NPJ7BcFfYffp3vOTGvVJohZgrldBXdum6ryaTfVPq2GP1i9RxkgX71XkDo0KRfb8zdBTAwCDvHPcgpIBMzqdWnQ3ycEXZKuYgp6OchYVilFSNUgcrQpavKPx8aV8gilx5vOqX1MHJKlPjDZ7bZd7B6mE22ITne9y5ttj1PFPKoQksWQOeDn1teKoKME2aTBdaCpq0pd25JiYsMepAe3zWjpIcZtkLVcRxYpGzCgGlFqCFT1zZusIwauQcLRrOlH80lgZScxcQPv10pCqbHfWpy2nDBbntYUxrEHjpSzAnpsb6BLTh33g2ZNmO1FV08ihZZDw8yh6FzYLGFjWAOeD9ub11lRk0ERGmIILb7D0pOE5znWyqwSAghGSK11DFi0qA4ajdZJam291FOqYuwrImUpGlzPIfWDzoUAnhMFNCXrsHSWxJBV2nvEyfFwRTxBGYjhkvwZJa8Mg8H38P6Cz8bTJhUXhi0YHN5kpnY0nmy1NwaKXq6qGxdfFIJAmISGtn3qiYStkLmXXy0UGfeSCcPy7O3ohUvRLB4sFkyVigzH8KZrZ0wOvY6hSLnZPnUBB1Asc37Y8BbquyG0JQ87xehmDwsxOblrjxNiLyztJK8Pz2Z3A5T6I0sHmO7P6xgohKyExEnFEeW6I0lXQg6a4q7DTuMZ0vVmc5SWPJ7HmfNG5ecB53I3IgA2D38wWZNUoXpz4MizTOrciftndi2gQuHQImWrazm7KsYTGWf9WpZvoSDZl3CM2K8zisdghnPFy1B23tROAmPiupYDiplnYER76383i2RuTxRpMBmFVxNF9bqFxIQFjPYCpUorKrl1zlufM4vXGFY3CmyASmcyYL46kUPcjKfY6A9WlCPxRx7Wo8vdg4OvIe" | |||
| 
 | |||
| 	sha256 := sha256.Sum256([]byte(s)) | |||
| 	md5 := md5.Sum([]byte(s)) | |||
| 
 | |||
| 	fmt.Println() | |||
| 	fmt.Println(s) | |||
| 
 | |||
| 	fmt.Println() | |||
| 	fmt.Printf("%x", sha256) | |||
| 	fmt.Println() | |||
| 
 | |||
| 	fmt.Println() | |||
| 	fmt.Printf("%x", md5) | |||
| 
 | |||
| 	fmt.Println() | |||
| 	fmt.Println() | |||
| 
 | |||
| } | |||
| @ -0,0 +1,15 @@ | |||
| package main | |||
| 
 | |||
| import "fmt" | |||
| 
 | |||
| func main() { | |||
| 	fmt.Println("hello world") | |||
| 
 | |||
| 	sum := 0 | |||
| 	for i := 0; i < 10; i++ { | |||
| 		fmt.Println(sum) | |||
| 		sum += i | |||
| 	} | |||
| 
 | |||
| 	fmt.Println(sum) | |||
| } | |||
| @ -0,0 +1,127 @@ | |||
| // Derived from: https://medium.com/@bobgzm/golang-cryptography-rsa-asymmetric-algorithm-e91363a2f7b3
 | |||
| 
 | |||
| package main | |||
| 
 | |||
| import ( | |||
| 	"crypto" | |||
| 	"crypto/rand" | |||
| 	"crypto/rsa" | |||
| 	"crypto/sha256" | |||
| 	"fmt" | |||
| 	"os" | |||
| ) | |||
| 
 | |||
| func main() { | |||
| 
 | |||
| 	alicePrivateKey, err := rsa.GenerateKey(rand.Reader, 2048) | |||
| 	if err != nil { | |||
| 		fmt.Println(err) | |||
| 		os.Exit(1) | |||
| 	} | |||
| 	alicePublicKey := &alicePrivateKey.PublicKey | |||
| 
 | |||
| 	bobPrivateKey, err := rsa.GenerateKey(rand.Reader, 2048) | |||
| 	if err != nil { | |||
| 		fmt.Println(err) | |||
| 		os.Exit(1) | |||
| 	} | |||
| 	bobPublicKey := &bobPrivateKey.PublicKey | |||
| 
 | |||
| 	fmt.Println("Alice's Private Key : ", alicePrivateKey) | |||
| 	fmt.Println() | |||
| 	fmt.Println("Alice's Public key ", alicePublicKey) | |||
| 	fmt.Println() | |||
| 	fmt.Println("Bob's Private Key : ", bobPrivateKey) | |||
| 	fmt.Println() | |||
| 	fmt.Println("Bob's Public key ", bobPublicKey) | |||
| 	fmt.Println() | |||
| 
 | |||
| 	message := []byte("first rule of cs5970 is that you tell everyone about cs5970") | |||
| 	label := []byte("") | |||
| 	hash := sha256.New() | |||
| 
 | |||
| 	ciphertext, err := rsa.EncryptOAEP( | |||
| 		hash, | |||
| 		rand.Reader, | |||
| 		bobPublicKey, | |||
| 		message, | |||
| 		label) | |||
| 
 | |||
| 	if err != nil { | |||
| 		fmt.Println(err) | |||
| 		os.Exit(1) | |||
| 	} | |||
| 
 | |||
| 	// OAEP is a padding scheme, used with RSA
 | |||
| 	fmt.Printf("OAEP encrypted [%s] to \n[%x]\n", string(message), ciphertext) | |||
| 	fmt.Println() | |||
| 
 | |||
| 	ciphertext2, err := rsa.EncryptOAEP( | |||
| 		hash, | |||
| 		rand.Reader, | |||
| 		bobPublicKey, | |||
| 		message, | |||
| 		label) | |||
| 
 | |||
| 	if err != nil { | |||
| 		fmt.Println(err) | |||
| 		os.Exit(1) | |||
| 	} | |||
| 
 | |||
| 	// OAEP is a padding scheme, used with RSA
 | |||
| 	fmt.Printf("OAEP encrypted [%s] to \n[%x]\n", string(message), ciphertext2) | |||
| 	fmt.Println() | |||
| 
 | |||
| 	var opts rsa.PSSOptions | |||
| 	opts.SaltLength = rsa.PSSSaltLengthAuto // for simple example
 | |||
| 	PSSmessage := message | |||
| 	newhash := crypto.SHA256 | |||
| 	pssh := newhash.New() | |||
| 	pssh.Write(PSSmessage) | |||
| 
 | |||
| 	hashed := pssh.Sum(nil) | |||
| 	signature, err := rsa.SignPSS( | |||
| 		rand.Reader, | |||
| 		alicePrivateKey, | |||
| 		newhash, | |||
| 		hashed, | |||
| 		&opts) | |||
| 
 | |||
| 	if err != nil { | |||
| 		fmt.Println(err) | |||
| 		os.Exit(1) | |||
| 	} | |||
| 
 | |||
| 	// Probabilistic Signature Scheme (PSS)
 | |||
| 	fmt.Printf("PSS Signature : %x\n", signature) | |||
| 	fmt.Println() | |||
| 
 | |||
| 	plainText, err := rsa.DecryptOAEP( | |||
| 		hash, | |||
| 		rand.Reader, | |||
| 		bobPrivateKey, | |||
| 		ciphertext, | |||
| 		label) | |||
| 
 | |||
| 	if err != nil { | |||
| 		fmt.Println(err) | |||
| 		os.Exit(1) | |||
| 	} | |||
| 
 | |||
| 	fmt.Printf("OAEP decrypted [%x] to \n[%s]\n", ciphertext, plainText) | |||
| 	fmt.Println() | |||
| 
 | |||
| 	err = rsa.VerifyPSS( | |||
| 		alicePublicKey, | |||
| 		newhash, | |||
| 		hashed, | |||
| 		signature, | |||
| 		&opts) | |||
| 
 | |||
| 	if err != nil { | |||
| 		fmt.Println("Signature verification failed!") | |||
| 		os.Exit(1) | |||
| 	} else { | |||
| 		fmt.Println("Verify Signature successful!") | |||
| 	} | |||
| } | |||
					Loading…
					
					
				
		Reference in new issue