Icke Bitvis XOR nyfikenhet för kryptering (5 / 7 steg)
Steg 5: Testa one-time pad
Den one-time pad är den enklaste av alla krypteringsmetoder. Det tar inmatningstext (klartext) och med Bitvis XOR kombinerar det med en annan input (nyckel).
Om nyckeln är slumpmässiga, lika lång eller längre än den vanlig texten och nyckeln används alltid bara en gång då är krypteringen, i teorin, okrossbar.
Oformaterad text xor nyckel == > chiffertext
Chiffertext xor nyckel == > oformaterad text
Låt oss börja:
Oformaterad text = "Mmm. Jag älskar sköldpaddor. "
Nyckel = "This_is_for_me_to_know"
--------------------------------------------
Cipher = "y E D y < h (O E 5 C. EN F 4 7 O J 9}"
Nyckel = "This_is_for_me_to_know"
--------------------------------------------
Oformaterad text = "Mmm. Jag älskar turtles."
Så det fungerar för rak engångs pad kryptering men det tog ett tag. Jag var tvungen att köra programmet på varje karaktär av nyckeln plus den oformaterad texten och sedan var jag tvungen att montera den. Jag tror det vore bättre om jag skrev en del kod för att göra detta för mig.
----
#! / bin/bash
Cat test.txt | awk "BEGIN {
CHK = 0
CNT = 1
medan (getline < "wheel.txt" > 0)
{
n [CNT] = $0; Jag [0] = CNT; CNT ++
}
mylen = CNT-1; mymax = CNT-2
Close("Wheel.txt")
}
{
CNT = 1
medan (CNT < = 80)
{
IF(CHK==0)
{
Result[CNT]=substr($0,CNT,1)
}
IF(CHK!=0)
{
Xin=substr($0,CNT,1)
Yin = resultat [CNT]
Pos1 = jag [Xin]
POS2 = jag [Yin]
IF(Pos1==0) pos1 = 1
IF(POS2==0) pos2 = 1
posx = 95-pos1-pos2
om (posx < = 0) posx = posx + 96
om (posx < = 0) posx = posx + 96
om (posx < = 0) posx = posx + 96
resultatet [CNT] = n [posx]
}
CNT ++
}
CHK = 1
}
SLUTET {
UT = ""
CNT = 1
medan (CNT < = 80)
{
UT = ut resultatet [CNT]
CNT ++
}
skriva ut
}'
----
Mitt andra problem är att one-time pad är för enkelt och har begränsningar av inte kunna återanvända nyckeln. Jag skulle vilja en metod där samma nyckel kommer inte att ge upp det är hemligheter så lätt.
.