 |
AutoHotkey Community Let's help each other out
|
| View previous topic :: View next topic |
| Author |
Message |
Sakurako
Joined: 10 May 2007 Posts: 142
|
Posted: Sat Feb 09, 2008 2:42 am Post subject: Encrypt Utility |
|
|
Note: this script is only sample of how one feature in Sakurako's encryption method would work (but that of the method would probably use something as Cos instead of simply adding the password), for security the sample would be only recommended for personal use
update version might use improved encryption and not likely to decrypt the code from previous version | Quote: | How it works?
Text + Password = Code, Code - Password = Text, but Password = Code - Text, that is, it would not be that secure if using same password for different file(s). In addition, if using only alphabet and number, conversion function other than ASCII code would be recommended (converting to invalid characters would probably reduce security level) | Version List:
Update Version http://www.autohotkey.com/forum/viewtopic.php?p=177459#177459
Previous Version (Original Function Version) http://www.autohotkey.com/forum/viewtopic.php?p=177371#177371
Original Version http://www.autohotkey.com/forum/viewtopic.php?p=177597#177597
| Code: | CodeCheck(String, Code, Option = "v")
{
A_FormatIntegerRec := A_FormatInteger
SetFormat, integer, hex
Loop, Parse, Code ; retrieve and check password
CodeCheck := SubStr(Asc(A_LoopField), 3) CodeCheck
Test := Round(StrLen(CodeCheck) / 2 + 1)
CodeCheckRec := Mod(Mod("0x" . CodeCheck, 1001), 0x100)
Code%Test% := CodeCheckRec
Test =
Loop, Parse, CodeCheck ; calculate password
{
If Test <>
{
Code0 += 1
Code%Code0% := "0x" . Test . A_LoopField
Code%Code0% += CodeCheckRec
Code%Code0% := Mod(Code%Code0%, 0x100)
CodeCheckRec := Code%Code0%
Test =
}
Else
Test .= A_LoopField
}
Code0 += 1
CodeCheck = 0
Loop, Parse, String ; encrypt text, Mod(Asc(A_LoopField) + PasswordAsc(n), 0x100)
{
CodeCheck += 1
If (CodeCheck > Code0)
CodeCheck = 0x1
TextConvertCheck .= SubStr("0" SubStr(Mod(Asc(A_LoopField) + Code%CodeCheck%, 0x100), 3), -1, 2)
}
SetFormat, integer, %A_FormatIntegerRec%
If Option
If (TextCheck(TextConvertCheck, Code) <> String)
TextConvertCheck = error
return TextConvertCheck
} |
| Code: | TextCheck(String, Code)
{
A_FormatIntegerRec := A_FormatInteger
SetFormat, integer, hex
Loop, Parse, Code ; retrieve and check password
CodeCheck := SubStr(Asc(A_LoopField), 3) CodeCheck
Test := Round(StrLen(CodeCheck) / 2 + 1)
CodeCheckRec := Mod(Mod("0x" . CodeCheck, 1001), 0x100)
Code%Test% := CodeCheckRec
Test =
Loop, Parse, CodeCheck ; calculate password
{
If Test <>
{
Code0 += 1
Code%Code0% := "0x" . Test . A_LoopField
Code%Code0% += CodeCheckRec
Code%Code0% := Mod(Code%Code0%, 0x100)
CodeCheckRec := Code%Code0%
Test =
}
Else
Test .= A_LoopField
}
Code0 += 1
CodeCheck = 0
Loop, Parse, String ; decrypt code, Mod(AscCheck(n) - PasswordAsc(n) + 0x100, 0x100)
{
If Test <>
{
CodeCheck += 1
If (CodeCheck > Code0)
CodeCheck = 0x1
Test := "0x" Test A_LoopField
Code_C := Mod(Test - Code%CodeCheck% + 0x100, 0x100)
TextCheck0 .= Chr(Code_C)
Test =
}
Else
Test .= A_LoopField
}
SetFormat, integer, %A_FormatIntegerRec%
return TextCheck0
} |
_________________
Last edited by Sakurako on Fri Apr 04, 2008 4:12 pm; edited 5 times in total |
|
| Back to top |
|
 |
Sakurako
Joined: 10 May 2007 Posts: 142
|
Posted: Sat Feb 09, 2008 12:26 pm Post subject: |
|
|
| Code: | | Msgbox, 64, EUtility Test, % "<" TextCheck("7785a4a19c9fa6a9508c95a9a6", A_YWeek) ">`n" CodeCheck("EUtility Test", A_YWeek, 0) |
| Code: | CodeCheck(String, Code, Option = "v")
{
A_FormatIntegerRec := A_FormatInteger
SetFormat, integer, hex
Loop, Parse, Code
{
Code%A_Index% := Asc(A_LoopField)
Code0 := A_Index
}
CodeCheck = 0
Loop, Parse, String
{
CodeCheck += 1
If (CodeCheck > Code0)
CodeCheck = 0x1
TextConvertCheck .= SubStr("0" SubStr(Mod(Asc(A_LoopField) + Code%CodeCheck%, 0x100), 3), -1, 2)
}
SetFormat, integer, %A_FormatIntegerRec%
If Option
If (TextCheck(TextConvertCheck, Code) <> String)
TextConvertCheck = error
return TextConvertCheck
} |
| Code: | TextCheck(String, Code)
{
A_FormatIntegerRec := A_FormatInteger
SetFormat, integer, hex
Loop, Parse, Code
{
Code%A_Index% := Asc(A_LoopField)
Code0 := A_Index
}
CodeCheck = 0
Loop, Parse, String
{
If Test <>
{
CodeCheck += 1
If (CodeCheck > Code0)
CodeCheck = 0x1
Test := "0x" Test A_LoopField
Code_C := Mod(Test - Code%CodeCheck% + 0x100, 0x100)
TextCheck0 .= Chr(Code_C)
Test =
}
Else
Test .= A_LoopField
}
SetFormat, integer, %A_FormatIntegerRec%
return TextCheck0
} |
_________________
|
|
| Back to top |
|
 |
Sakurako
Joined: 10 May 2007 Posts: 142
|
Posted: Sat Feb 09, 2008 10:49 pm Post subject: |
|
|
Special Version | Code: | CodeCheck(String, Code, Option = "v")
{
A_FormatIntegerRec := A_FormatInteger
SetFormat, integer, hex
Loop, Parse, Code
CodeCheck := SubStr(Asc(A_LoopField), 3) CodeCheck
Test := Round(StrLen(CodeCheck) / 2 + 1)
CodeCheckRec := Mod(Mod("0x" . CodeCheck, 1001), 0x100)
Code%Test% := CodeCheckRec
Test =
Loop, Parse, CodeCheck
{
If Test <>
{
Code0 += 1
Code%Code0% := "0x" . Test . A_LoopField
Code%Code0% += CodeCheckRec
Code%Code0% := Mod(Code%Code0%, 0x100)
CodeCheckRec := Code%Code0%
Test =
}
Else
Test .= A_LoopField
}
Code0 += 1
CodeCheck = 0
Loop, Parse, String
{
CodeCheck += 1
If (CodeCheck > Code0)
CodeCheck = 0x1
TextConvertCheck .= SubStr("0" SubStr(Mod(Asc(A_LoopField) + Code%CodeCheck%, 0x100), 3), -1, 2)
}
SetFormat, integer, %A_FormatIntegerRec%
If Option
If (TextCheck(TextConvertCheck, Code) <> String)
TextConvertCheck = error
return TextConvertCheck
} |
| Code: | TextCheck(String, Code)
{
A_FormatIntegerRec := A_FormatInteger
SetFormat, integer, hex
Loop, Parse, Code
CodeCheck := SubStr(Asc(A_LoopField), 3) CodeCheck
Test := Round(StrLen(CodeCheck) / 2 + 1)
CodeCheckRec := Mod(Mod("0x" . CodeCheck, 1001), 0x100)
Code%Test% := CodeCheckRec
Test =
Loop, Parse, CodeCheck
{
If Test <>
{
Code0 += 1
Code%Code0% := "0x" . Test . A_LoopField
Code%Code0% += CodeCheckRec
Code%Code0% := Mod(Code%Code0%, 0x100)
CodeCheckRec := Code%Code0%
Test =
}
Else
Test .= A_LoopField
}
Code0 += 1
CodeCheck = 0
Loop, Parse, String
{
If Test <>
{
CodeCheck += 1
If (CodeCheck > Code0)
CodeCheck = 0x1
Test := "0x" Test A_LoopField
Code_C := Mod(Test - Code%CodeCheck% + 0x100, 0x100)
TextCheck0 .= Chr(Code_C)
Test =
}
Else
Test .= A_LoopField
}
SetFormat, integer, %A_FormatIntegerRec%
return TextCheck0
} |
_________________
|
|
| Back to top |
|
 |
Sakurako
Joined: 10 May 2007 Posts: 142
|
Posted: Sun Feb 10, 2008 8:24 pm Post subject: Re: Encrypt Utility |
|
|
Original Version | Sakurako wrote: | | Code: | SetFormat, integer, hex
Gui, Add, Edit, vTextCheck w300 h300 HwndControlHwnd
Gui, Add, Edit, vCode w300, Code
Gui, Add, Button, section vEUtility_FilePick gFilePick, File
Gui, Add, Button, ys vEUtility_Code gCodeCheck, Code
Gui, Add, Button, ys vEUtility_Text gTextCheck, Text
Gui, Show,, Encrypt Utility ; probably would be better if converting to Unicode first, 0 ~ f to extended
return
CodeCheck:
If FileName
{
FileRead, TextCheck, %Filename%
InputBox, Code, Code,,,, 100
If Code =
Code = Code
}
Else
{
GuiControlGet, TextCheck
GuiControlGet, Code
If TextCheck =
return
}
Loop, Parse, Code
{
Code%A_Index% := Asc(A_LoopField)
Code0 := A_Index
}
TextConvertCheck =
CodeCheck = 0
Loop, Parse, TextCheck
{
CodeCheck += 1
If (CodeCheck > Code0)
CodeCheck = 0x1
TextConvertCheck .= SubStr("0" SubStr(Mod(Asc(A_LoopField) + Code%CodeCheck%, 0xff), 3), -1, 2)
}
Gosub, TextCheck
IfInString, TextCheck0, %TextCheck%
{
GuiControl,, TextCheck, %TextConvertCheck%
MsgBox, 64, Info, Done
}
Else
MsgBox, 48, Info, Error
If FileName
FileAppend, %TextCheck0%, %FileName%.cse
FileName =
return
TextCheck:
If A_GuiControl = EUtility_Text
{
GuiControlGet, TextCheck
GuiControlGet, Code
Loop, Parse, Code
{
Code%A_Index% := Asc(A_LoopField)
Code0 := A_Index
}
If TextCheck =
return
Else
TextConvertCheck := TextCheck
}
Test =
TextCheck0 =
CodeCheck = 0
Loop, Parse, TextConvertCheck
{
If Test <>
{
CodeCheck += 1
If (CodeCheck > Code0)
CodeCheck = 0x1
Test := "0x" Test A_LoopField
Code_C := Mod(Test - Code%CodeCheck% + 0xff, 0xff)
TextCheck0 .= Chr(Code_C)
Test =
}
Else
Test .= A_LoopField
}
If A_GuiControl = EUtility_Text
{
GuiControl,, TextCheck, %TextCheck0%
MsgBox, 64, Info, Done
}
Loop %Code0%
Code%A_Index% =
return
FilePick:
FileSelectFile, FileName, 1,, Encrypt Utility, Document (*.txt)
If FileName =
return
Gosub, CodeCheck
return |
|
_________________
|
|
| Back to top |
|
 |
SMOKE 1990
Joined: 12 Feb 2008 Posts: 50
|
Posted: Fri Feb 15, 2008 5:02 am Post subject: |
|
|
| I got a question for you that you could pm me about so i can find it easier, where do enter this into my script in order for it to encrypt after i complie it. I dont mind letting a few people use my program i just dont want them to know how its made. |
|
| Back to top |
|
 |
tic
Joined: 22 Apr 2007 Posts: 1355
|
Posted: Fri Feb 15, 2008 6:47 am Post subject: |
|
|
| just put a password and /nodecompile switch when you compile |
|
| Back to top |
|
 |
scottmeyer
Joined: 29 Jul 2007 Posts: 13
|
Posted: Sun Feb 17, 2008 2:29 pm Post subject: Need help, variant scrypt |
|
|
Hello,
Your script autohotkey for encryption is excellent!
I want to use part of your program in my program, in order to give information to my program without the user does not know what it is.
I would need a GUI requesting the code (encrypted) and an OK button.
I also hope that the code (key phrase) is placed directly in my AutoHotKey program, we should not box asking GUI code.
Sorry I do not speak English well, I am french ^ ^
J'espére that I managed to make myself understood
Thank you in advance for your help |
|
| Back to top |
|
 |
Sakurako
Joined: 10 May 2007 Posts: 142
|
Posted: Mon Feb 18, 2008 2:32 am Post subject: |
|
|
| SMOKE 1990 wrote: | | I got a question for you that you could pm me about so i can find it easier, where do enter this into my script in order for it to encrypt after i complie it. I dont mind letting a few people use my program i just dont want them to know how its made. | Sorry, it might be difficult to support script file encryption without dynamic command ... | scottmeyer wrote: | ...
I would need a GUI requesting the code (encrypted) and an OK button.
I also hope that the code (key phrase) is placed directly in my AutoHotKey program, we should not box asking GUI code
... |
| Code: | Gui, Add, Edit, vText w300 h300
Gui, Add, Edit, vCode w100, Code
Gui, Add, Button, gEncrypt, Encrypt
Gui, Show,, Encrypt - EncryptUtility
return
Encrypt:
GuiControlGet, Code
GuiControlGet, Text
GuiControl,, Text, % CodeCheck(Text, Code)
return
CodeCheck(String, Code, Option = "v")
{
A_FormatIntegerRec := A_FormatInteger
SetFormat, integer, hex
Loop, Parse, Code
CodeCheck := SubStr(Asc(A_LoopField), 3) CodeCheck
Test := Round(StrLen(CodeCheck) / 2 + 1)
CodeCheckRec := Mod(Mod("0x" . CodeCheck, 1001), 0x100)
_Code%Test% := CodeCheckRec
Test =
Loop, Parse, CodeCheck
{
If Test <>
{
Code0 += 1
_Code%Code0% := "0x" . Test . A_LoopField
_Code%Code0% += CodeCheckRec
_Code%Code0% := Mod(_Code%Code0%, 0x100)
CodeCheckRec := _Code%Code0%
Test =
}
Else
Test .= A_LoopField
}
If (StrLen(Code) <= StrLen(String))
Code0 += 1
Loop %Code0%
{
ANum := Code0 - A_Index + 1
Code%ANum% := _Code%A_Index%
}
CodeCheck = 0
Loop, Parse, String
{
CodeCheck += 1
If (CodeCheck > Code0)
CodeCheck = 0x1
TextConvertCheck .= SubStr("0" SubStr(Mod(Asc(A_LoopField) + Code%CodeCheck%, 0x100), 3), -1, 2)
}
SetFormat, integer, %A_FormatIntegerRec%
If Option
If (TextCheck(TextConvertCheck, Code) <> String)
TextConvertCheck = error
return TextConvertCheck
}
; following function could be removed
TextCheck(String, Code)
{
A_FormatIntegerRec := A_FormatInteger
SetFormat, integer, hex
Loop, Parse, Code
CodeCheck := SubStr(Asc(A_LoopField), 3) CodeCheck
Test := Round(StrLen(CodeCheck) / 2 + 1)
CodeCheckRec := Mod(Mod("0x" . CodeCheck, 1001), 0x100)
_Code%Test% := CodeCheckRec
Test =
Loop, Parse, CodeCheck
{
If Test <>
{
Code0 += 1
_Code%Code0% := "0x" . Test . A_LoopField
_Code%Code0% += CodeCheckRec
_Code%Code0% := Mod(_Code%Code0%, 0x100)
CodeCheckRec := _Code%Code0%
Test =
}
Else
Test .= A_LoopField
}
If (StrLen(Code) <= StrLen(String))
Code0 += 1
Loop %Code0%
{
ANum := Code0 - A_Index + 1
Code%ANum% := _Code%A_Index%
}
CodeCheck = 0
Loop, Parse, String
{
If Test <>
{
CodeCheck += 1
If (CodeCheck > Code0)
CodeCheck = 0x1
Test := "0x" Test A_LoopField
Code_C := Mod(Test - Code%CodeCheck% + 0x100, 0x100)
TextCheck0 .= Chr(Code_C)
Test =
}
Else
Test .= A_LoopField
}
SetFormat, integer, %A_FormatIntegerRec%
return TextCheck0
} |
| Code: | Gui, Add, Edit, vText w300 h300 ; text to replace
Gui, Add, Edit, vCode w100
Gui, Add, Button, gDecrypt, OK
Gui, Show,, Decrypt - EncryptUtility
return
Decrypt:
GuiControlGet, Code
GuiControlGet, Text
GuiControl,, Text, % TextCheck(Text, Code)
return
TextCheck(String, Code) ; format TextCheck("CodeValue", "PasswordValue") or TextCheck(CodeVar, PasswordVar)
{
A_FormatIntegerRec := A_FormatInteger
SetFormat, integer, hex
Loop, Parse, Code
CodeCheck := SubStr(Asc(A_LoopField), 3) CodeCheck
Test := Round(StrLen(CodeCheck) / 2 + 1)
CodeCheckRec := Mod(Mod("0x" . CodeCheck, 1001), 0x100)
_Code%Test% := CodeCheckRec
Test =
Loop, Parse, CodeCheck
{
If Test <>
{
Code0 += 1
_Code%Code0% := "0x" . Test . A_LoopField
_Code%Code0% += CodeCheckRec
_Code%Code0% := Mod(_Code%Code0%, 0x100)
CodeCheckRec := _Code%Code0%
Test =
}
Else
Test .= A_LoopField
}
If (StrLen(Code) <= StrLen(String))
Code0 += 1
Loop %Code0%
{
ANum := Code0 - A_Index + 1
Code%ANum% := _Code%A_Index%
}
CodeCheck = 0
Loop, Parse, String
{
If Test <>
{
CodeCheck += 1
If (CodeCheck > Code0)
CodeCheck = 0x1
Test := "0x" Test A_LoopField
Code_C := Mod(Test - Code%CodeCheck% + 0x100, 0x100)
TextCheck0 .= Chr(Code_C)
Test =
}
Else
Test .= A_LoopField
}
SetFormat, integer, %A_FormatIntegerRec%
return TextCheck0
} |
_________________
|
|
| Back to top |
|
 |
Rhys
Joined: 17 Apr 2007 Posts: 722 Location: Florida
|
Posted: Mon Feb 18, 2008 3:20 pm Post subject: |
|
|
Thanks for sharing, this is really fun to use. The GUI makes it very simple to play around with. I wonder how secure this is, but I don't know enough about crypto to find out (yet). I've read some really interesting discussions on this forum about it, though.
Can someone tell me what this says?
662deab67f4e1ae2a7604dceefb084ff0edbb4354f10d8a32f4e0cd7af36f213d7a91c2503c5477b2cf8727e511beead45 _________________ [Join IRC!]
 |
|
| Back to top |
|
 |
scottmeyer
Joined: 29 Jul 2007 Posts: 13
|
Posted: Mon Feb 18, 2008 11:07 pm Post subject: |
|
|
Hi !
I actually wish to remove "Gui, Add, Edit, vCode"!
But if I do, and I try to replace this line:
Code = Key Phrase
It is no longer working ...
An idea?
[ EDIT ]
Thank You for your help, it's ok, this program is excellent ^^
Last edited by scottmeyer on Sat Mar 08, 2008 11:33 am; edited 1 time in total |
|
| Back to top |
|
 |
Rhys
Joined: 17 Apr 2007 Posts: 722 Location: Florida
|
Posted: Tue Feb 19, 2008 2:53 am Post subject: |
|
|
@ScottMeyer: It doesn't like certain key phrases for some reason. I didn't look too closely, but there's a function that checks the key phrase you use for something.
This worked for me (commented out two lines and added a definition of the Code variable: | Code: | Gui, Add, Edit, vText w300 h300
;Gui, Add, Edit, vCode w100, Code
Gui, Add, Button, gEncrypt, Encrypt
Gui, Show,, Encrypt - EncryptUtility
return
Encrypt:
;GuiControlGet, Code
Code:="pass_word"
GuiControlGet, Text
GuiControl,, Text, % CodeCheck(Text, Code)
return |
_________________ [Join IRC!]
 |
|
| Back to top |
|
 |
Sakurako
Joined: 10 May 2007 Posts: 142
|
Posted: Tue Feb 19, 2008 3:25 am Post subject: |
|
|
If password not long enough to encrypt the text, decryption attempt would probably be as simple as detecting the number of invalid characters. But if conversion method using only valid characters, the number of invalid would be 0, and how secure it is probably would depend on ENum^PL (ENum = the number of valid characters in the conversion list, PL = the length of password but not more than that of text). Another advantage of valid character conversion is to avoid the double file size problem ~
Conversion method similar to following would be recommended if text using only Chr(9) and Chr(32) ~ Chr(126) ...
| Code: | Conversion(String, Option = "c")
{
If Option = c
If String = 0
return Chr(9)
Else
return Chr(String + 31)
Else
If (String = Chr(9))
return Asc(Chr(9))
Else
return Asc(String) - 31
} |
Remove code parameter of TextCheck() function
| Code: | Gui, Add, Edit, vText w360, 9009a33f7838ea92295cd15010c647f79325b0c4853fc150ee8e2e
Gui, Add, Button, gDecrypt, OK
Gui, Show,, Decrypt - EncryptUtility
return
Decrypt:
GuiControlGet, Code
GuiControlGet, Text
GuiControl,, Text, % TextCheck(Text)
return
TextCheck(String)
{
Code = test_key ; replace test_key
A_FormatIntegerRec := A_FormatInteger
SetFormat, integer, hex
Loop, Parse, Code
CodeCheck := SubStr(Asc(A_LoopField), 3) CodeCheck
Test := Round(StrLen(CodeCheck) / 2 + 1)
CodeCheckRec := Mod(Mod("0x" . CodeCheck, 1001), 0x100)
_Code%Test% := CodeCheckRec
Test =
Loop, Parse, CodeCheck
{
If Test <>
{
Code0 += 1
_Code%Code0% := "0x" . Test . A_LoopField
_Code%Code0% += CodeCheckRec
_Code%Code0% := Mod(_Code%Code0%, 0x100)
CodeCheckRec := _Code%Code0%
Test =
}
Else
Test .= A_LoopField
}
If (StrLen(Code) <= StrLen(String))
Code0 += 1
Loop %Code0%
{
ANum := Code0 - A_Index + 1
Code%ANum% := _Code%A_Index%
}
CodeCheck = 0
Loop, Parse, String
{
If Test <>
{
CodeCheck += 1
If (CodeCheck > Code0)
CodeCheck = 0x1
Test := "0x" Test A_LoopField
Code_C := Mod(Test - Code%CodeCheck% + 0x100, 0x100)
TextCheck0 .= Chr(Code_C)
Test =
}
Else
Test .= A_LoopField
}
SetFormat, integer, %A_FormatIntegerRec%
return TextCheck0
} |
_________________
|
|
| Back to top |
|
 |
Rhys
Joined: 17 Apr 2007 Posts: 722 Location: Florida
|
Posted: Tue Feb 19, 2008 4:28 am Post subject: |
|
|
As I said, I'm really not well-versed in crypto theory, but I had an idea today that may or may not have merit. To me, a potential way to defeat (or at least make much more difficult) decryption attacks is to make your original message less like 'normal' text.
For example, eliminating vowels (which often results in semi-understandable messages) or even scrambling the middle letters of words.
Example 1:
Fr xmpl, lmntng vwls (whch oftn rslts n sm-ndrstndbl mssgs) r vn scrmblng th mddl lttrs f wrds.
Example 2:
For elampxe, eilniitmang vlwoes (wchih oeftn rltuess in semi-urdtnsbnldaeae messages) or even smalncibrg the mdilde lettres of wrods.
Obviously these methods aren't without their drawbacks - Short words are harder to understand in the first example and are not scrambled in the second. This could be minimized by using longer words, but neither is a perfect way to obfuscate a secret message prior to encryption. This type of obfuscation is also (for lack of a better term) lossy, and could create ambiguity where it isn't welcome (maybe my recipient would laminate all of his vowels instead of eliminating them!).
In the case of the missing vowels, it might even aid decryption if the attacker is able to detect a reduced character set (or increased occurance of 1-3 letter words) and deduce that there are no vowels in the message.
I thought it would be cool if there were a way to easily obfuscate the text of a secret message that is perfectly readable, even after obfuscation. In that case, decryption attempts (I think) would be much more difficult with very little lost functionality, especially in contrast to the two above.
What I suggest would be a function that runs before the secret message is encrypted that converts most characters to a random character that is identical, except for an accent.
Example 3:
Add random accents to some letters like this.
Âdd řåñďom acċèntś tö śõmë leťŧerş ļîkè tĥĩs.
Wouldn't that make malicious decryption much more difficult but also be very easy to obfuscate / de-obfuscate (sorry if these are incorrect terms!) the text with very little 'loss' (you'd lose any 'valid' accents, señor!)? If de-obfuscation is a weak point, it isn't really necessary to understand the obfuscated message. Maybe this method is already known and used, but if not, why not?
Edit: Another benefit to this method is that the same message would never look the same even if encrypted with the same key, since the characters would be different each time. _________________ [Join IRC!]
 |
|
| Back to top |
|
 |
Sakurako
Joined: 10 May 2007 Posts: 142
|
Posted: Tue Feb 19, 2008 6:59 pm Post subject: |
|
|
Not sure whether vowel encryption would work on US/UK system or not, but probably difficult to support international mode ~ _________________
|
|
| Back to top |
|
 |
Lawrence
Joined: 20 Feb 2008 Posts: 4
|
Posted: Fri Feb 22, 2008 7:37 am Post subject: |
|
|
| Your script here is so cooooooool. I used it in my program.. thank you! |
|
| Back to top |
|
 |
|
|
You can post new topics in this forum You can reply to topics in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|