65
twentyfive/day_twentyfive.go
Normal file
65
twentyfive/day_twentyfive.go
Normal file
@@ -0,0 +1,65 @@
|
||||
package twentyfive
|
||||
|
||||
import "fmt"
|
||||
|
||||
type key struct {
|
||||
public int
|
||||
sub int
|
||||
loopsize int
|
||||
}
|
||||
|
||||
func (k *key) generatePublic() {
|
||||
v := 1
|
||||
|
||||
for i := 0; i < k.loopsize; i++ {
|
||||
v *= k.sub
|
||||
v %= 20201227
|
||||
}
|
||||
|
||||
k.public = v
|
||||
}
|
||||
|
||||
func (k *key) encryption(public int) int {
|
||||
v := 1
|
||||
|
||||
for i := 0; i < k.loopsize; i++ {
|
||||
v *= public
|
||||
v %= 20201227
|
||||
}
|
||||
|
||||
return v
|
||||
}
|
||||
|
||||
func (k *key) determineLoopSize() {
|
||||
if k.public == 0 {
|
||||
return
|
||||
}
|
||||
|
||||
v := 1
|
||||
loopsize := 0
|
||||
for v != k.public {
|
||||
v *= k.sub
|
||||
v %= 20201227
|
||||
loopsize++
|
||||
}
|
||||
|
||||
k.loopsize = loopsize
|
||||
}
|
||||
|
||||
// PartOne What encryption key is the handshake trying to establish?
|
||||
func PartOne() string {
|
||||
card := key{
|
||||
public: 2069194,
|
||||
sub: 7,
|
||||
}
|
||||
|
||||
door := key{
|
||||
public: 16426071,
|
||||
sub: 7,
|
||||
}
|
||||
|
||||
card.determineLoopSize()
|
||||
door.determineLoopSize()
|
||||
|
||||
return fmt.Sprintf("The handshake is trying to establish the key %d", door.encryption(card.public))
|
||||
}
|
Reference in New Issue
Block a user