Khoi Trinh
3 years ago
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