Код
$regfile = "m16def.dat"
$crystal = 8000000
$hwstack = 64
$swstack = 64
$framesize = 64
$baud = 9600
Enable Interrupts
''''''''''''''''''''''''''''''''''''******************
$sim 'только при симуляции
''''''''''''''''''''''''''''''''''''******************
'шифрование
Dim Encrypt_key As Byte , Encrypt As Byte , Tmp As Byte
Dim Tmp1_str As Byte , Tmp2_str As Byte
Dim Input_str As String * 50 , Tmp_str As String * 2
Dim Test_str As String * 50
Dim A As Byte , B As Byte , C As Byte
'Test Code
Do
Input "type anything > " , Input_str ' данные для шифрования
' *** ENCRYPT
' случайный ключ шифрования
B = Len(input_str)
If B > 0 Then
Encrypt_key = Rnd(255) ' случайное число шифрования от 0 до 255
Tmp1_str = &HF0 And Encrypt_key
Tmp2_str = &H0F And Encrypt_key
Print "ENCRYPT : ";
Print Hex(tmp1_str) ;
Test_str = Hex(tmp1_str)
'Xor
For A = 1 To Len(input_str) 'шифрование строки в шестнадцатеричный формат
Tmp_str = Mid(input_str , A , 1)
Tmp = Asc(tmp_str)
Encrypt = Tmp Xor Encrypt_key
Print Hex(encrypt) ;
Test_str = Test_str + Hex(encrypt)
Next
Print Hex(tmp2_str)
Test_str = Test_str + Hex(tmp2_str)
End If
'** DECRYPT
' расшифровка
' first + last hex = encrypt key
Input_str = Test_str
Tmp_str = Left(input_str , 2)
Tmp1_str = Hexval(tmp_str)
Tmp_str = Right(input_str , 2)
Tmp2_str = Hexval(tmp_str)
Encrypt_key = Tmp1_str + Tmp2_str
Print "KEY = " ; Hex(encrypt_key)
Print "Decode text = ";
B = Len(input_str) - 2
For A = 3 To B Step 2
Tmp_str = Mid(input_str , A , 2)
Tmp1_str = Hexval(tmp_str)
C = Tmp1_str Xor Encrypt_key
C = Asc(c)
Print Chr(c);
Next
Print
Loop
End