How to decipher a text? - text

I am given a text:
Xli wigsrh qiwweki aew irgvctxih ywmrk xli pmriev gshi amxl e xlvii
erh o wmb.
I need to dechiper it. How to decipher a text without knowing which method was used to encode it? I just need some hints.
Thanks in advance.

Deciphering works by achieving the reversal of the encryption's (ciphering's) effect:
Through brute force, basically meaning "trial and error", either by hand or with automated or semi-automated tools; And usually including finding out what type of cipher you are dealing with, to make deciphering easier.
or
Through obtaining and reverse-engineering the encryption or decryption code, which is hardly ever obtainable unless the application is 100% local; Not to mention doing so is almost always completely illegal.
This applies to deciphering all types of encryption, but please notice that this considers ciphering only, and that ciphering is almost never applied alone: Things like hashing, message-digesting and obfuscation exist and are widely used along with it.
As for your specific case, it is as #nickhar mentioned: A substitution-cipher, meaning the alphabet's element's positions were rotated and/or swapped.
I won't lie to you: This is a very weak cipher that can be deciphered by hand with a little bit of word-letter-counting and guesstimation, and as such, there are plenty of automated tools out there that will decipher it with the press of a button.
But then again, I wont lie to you: If you want to really understand the stuff, get your head down, your hands dirty, and do it (decipher) yourself.
If you study and learn, you will be answering this type of question in no time! =D

Deciphering is not a big deal. You just have to check for every value of k, i.e. 25
as there are total 26 letters.
After deciphering it gives "The second message was encrypted using the linear code with a three and k six", and the K used was 4(k=4).

Related

Is this password generating algorithm vulnerable to brute force attack?

I think I have a new way of creating very hard to hack passwords. Assume you have your password, some simple word, like "security" or phrase "cantHackMe". Sure these passwords are easy to bruteforce. So if you left it somewhere and they are only md5 hashed it's easy to crack them with bruteforce, using the dictionary.
If you are thinking a longer password, like 20 letters - oh God it's so hard to remember. What if you had a random password that is easy to remember and you can combine your security with it?
I think I found an easy way to get a random password of any length: just look at your keyboard and think of some algorithm to go through the letters. The simplest way is to go all top row from "q" to "p", next row, from "a" to "l" and next one, from "z" to "b". As the result you will get qwertyuiopasdfghjklzxcvbsecurity. If the attacker is going to use a dictionary, he will doubtless guess, that what figure you decided to use on a keyboard and how many times. And then he'd have to put the dictionary word. Do you see any vulnerabilities in this approach?
I'm not talking about only going keyboard letters one by one from left to right. You can go in any path you are easy to remember. And start and finish at any point. This is an easy way to remember really meaningless sequence of random letters. So you can make something like qazxswedcvfrtgbnhyujmsecurity - it's a sequence of letters pressed from top to bottom. Very easy to remember, hard to bruteforce.
Gumbo pointed out that there's a strategy of cracking passwords, using such paterns like this. But as you can see it works only if amount of letters is relatively small and you are not using your password. If it's quite big(more that 20 letters is enough) and you are adding your real password somewhere inside, it's almost unbreakable.
What you're considering is similar to the pass phrase, which is a bunch of easy to remember words. It makes it exponentially more difficult to brute force your password.
However, the state of the art in password protection on the server end is pretty darn good. Using a modern hash like Blowfish makes it very, very expensive to brute force even relatively short passwords.
Also, simply using different passwords for different systems makes it much less meaningful if someone does crack a system you have an account on, and is probably an easier system to implement for humans.
I see a simple problem in this approach, the keyboard layout may change between keyboards making the method difficult to implement for example when moving from a desktop computer to a laptop, or even a mobile device, making the secuence potentially different...

Adding some noise to a text

I wonder if there is any known algorithm/strategy to add some noise to a text string (for instance, adding a random sequence of characters every now and then or something similar).
I don't want to completely destroy the text just to make it slightly unusable. Also, I'm not interested in reversing back the changes, I can just recreate the original text from the sources I used to create it in the first place if needed.
Of course, a very basic algorithm for doing this could be easyly implemented but probably somebody has already created a somewhat sophisticated algorithm for this. If a Java implementation of something like this is available even better.
If you are using .Net and you need some random bytes maybe try the GetBytes method from the rngcryptoprovider. Nice n random. You could also use it to help in selection random positions to update.

One handed coding -- tablet, special keyboard, one-handed typing?

I recently broke my finger and can now only type with my right hand. This has seriously impacted my typing speed. Since I write software for a living, this is a serious problem.
I have been doing some research, but haven't found a great solution yet. Here's what I've come up with:
Wacom tablet + hand writing recognition software. Is it possible to write code with hand writing recognition software?
one handed keyboards -- I have only found expensive (> $100) keyboards. These look like they have a steep learning curve.
one handed typing instructions: http://www.aboutonehandtyping.com/manualcompare.html. Does this really work?
What do the one handed coders out there use?
If you're a two-hand touch typist, the answer is a "mirrored" layout.
Mirroring lets you begin touch-typing with one hand almost immediately. Pretty crazy how easy it is. Based on the muscle memory you already have.
If you're typing with your right hand:
Type all right-hand keys normally.
Don't type left hand keys. Instead type the same motion (but mirrored) with your right hand.
So if you want to type:
"D" -> type "K" instead.
"W" -> type "O" instead.
"S" -> type "L" instead.
Same row of keyboard, same finger, same motion. Your muscle memory can already do this... kind of like how you're unable to pat your head and rub your belly at the same time. The wires in your brain are crossing somewhere.
Software to mirror the keyboard as described above:
Hold Spacebar to mirror:
Linux - MirrorBoard
Mac - Mirror-QWERTY
Windows - AutoHotkey version of Half-QWERTY Half-Keyboard
Predictive Text; Automatic Mirroring
Mac - One-Hand Keyboard
Windows - One-Hand Keyboard
Regarding one-handed keyboards, I've tried using a frogpad and found it ok for typing text, but unusable for coding. The symbols require several consecutive key presses and I found it impossible to use shortcuts reliably. It was too easy to hit the wrong key and get it stuck in the wrong mode.
Nobody has mentioned ENTI-key aka Coffee++ Layout yet? It is exactly designed for programming with one hand (left). And unlike qwerty, it is even optimized for speed and ergonomics. I used it some years ago for a short while and I don't know if it still works on newer systems. I think I used it for writing CSS: Typing the words with left, typing all those numbers on the numpad with right.
I can not recommend pen+handwriting. I usually use a tablet PC and handwriting code is terrible. I tried it on Windows 8 and Linux with Cellwriter, and both are not bad programs, but I still switch to onscreen keyboard whenever I can. But maybe the problem is my scratchy writing :)
I also can tell from experience that learning a new layout is not as complicated as it sounds. Especially if the layout is more logical than qwerty. I use Neo Layout since 10 years and getting the hang of it went smoothly, I was able to write a blog article after an evening of training.
"But what if you have to use qwerty on another PC?" This, also, is no problem, really. My simple trick is to never look at the keyboard when using Neo, but glimpse at it when qwerty-ing.
Good luck to anyone who wants to or has to use one hand for typing!
Now, the time to heal a broken finger will be shorter than it takes to adapt to one handed coding, not to mention the time it takes afterwards to get back to two-handed coding
Also, the time it takes to learn the methods is time you could've spend on coding (read: making a living).
Knowing this, we need a quick-fix, short term solution.
First of all, A good IDE, with code completion and similar functionality will help you a lot.
Secondly, use the shortcuts of the IDE, remember, there are Shift, Altand Ctrl keys on both sides of your keyboard.
(you might want to create a cheatsheet for those shortcuts)
In addition to helping you during your time with your injury, learning the shortcuts will also improve your coding speed when you're back up again.
Now, my comments on your proposals:
Don't, simply, Don't, it'll take even more time to fix writos (typos) beacause recognition will be flaky.
That learing curve will slow you down even more.
Won't even comment on that one...
Mirrorboard
A friend of mine broke his wrist snowboarding, and he had reasonable luck using speech recognition software (Nuance Dragon Naturally Speaking). It worked quite well for email and documentation, which would solve a part of your problem.
Another colleague, Nils Klarlund of AT&T, developed a version of emacs hooked into speech recognition. He even had a home-brewed set of foot pedals for doing shift, control, etc. He used this exclusively for years (due to bad carpal tunnel syndrome).
And maybe your feet can take up some of the burden. This is part of a parallel discussion going on in this question.
And off-topic, but extremely interesting, T.V. Raman, who's been blind since the age of 14, wrote a version of emacs that works with keyboard input and audio output. There's a chapter on it in Beautiful Code. I've seen him use it, and it's completely awesome. And of course emacs is a great interface for more than just text editing.
If you anticipate that your left hand will be out of commission for a long while, and if it's worthwhile for you to learn a new layout, then there exist one-handed Dvorak layouts.
There's some information at PC Guide: Single-Handed Dvorak Alphanumeric Layouts.
There also once was software for Qwerty Half Keyboards that used the space bar as an extra shift key that reversed the keyboard.
Good luck with your injury!
We have a developer in the office that lost mobility in his right hand and probably won't gain back full use of it. He has mainly learned to type well with his left hand and kind of fill in for his right hand. Although he lets his right hand kind of peck for things. He has gained enough speed back for it not to affect his day too greatly from what i can tell.
Only thing i can think of that might let you speed up some while typing with one hand and maybe being able to get a key or two with the other hand might be to use an IDE instead of text editor if you already don't, so you can use tab completion. Kind of a lame solution if you don't like IDEs or just don't have that option in your work environment but might help out a bit.
The same thing happened to me (I destroyed my left pinky). At the time, I didn't touch type, so my only use for my pinky was left-control, left-shift, and caps-lock.
This sounds as if it just happened to you. I promise you'll quickly learn to compensate. Remember, it's quality, not speed, that counts most.
Perhaps you should seize the opportunity and read to improve yourself as a programmer. Or spend some time debugging.

Uses for Wolfram Alpha in programming

Now that Wolfram Alpha is released, I am interested in finding out if it can be used as a time-saver in daily programming.
What would you use Wolfram Alpha to do, that earlier took you more time to do manually?
I guess the "Web and Computer systems"-examples is a good start, but there must be more hidden gems that will be really practical for us programmers.
A short list of examples:
MD5-hashing / SHA-hashing
Quick lockup of unicode and HTML-codes for symbols
Color-codes
Please only include one search query per answer, then we can rate them to get the best ones to the top.
(I made this one a community-wiki, since we will be using the voting for ranking)
Note: If some of the links in the answers don't work (eg: wolfram doesn't find any results, then replace all + with spaces..
I might 'save time' by not playing around with it and doing real work instead. :)
Calculating lift coefficients of NACA profiles (example).
(I made a program for this, but it's nice to have the option to do it quick)
I probably won't use it for anything. I don't know about you, but I deal with enough black boxes on a daily basis, and I'd rather use the ones that have been tried and tested thoroughly.
This might come back to haunt me later, but it strikes me that although there might be a point to WA used in a mechanical manner, from my perspective I'm thinking it's not the hard calculable information questions which are the problem which needs to be solved, it's the soft human data which defies classification or rigid modelling. Google seem to understand this, not sure Stephen Wolfram does.
OTOH it could be that anyone can be Colin Laney now.
Someone double check me here:
The MD5 hash of "Wolfram Alpha" (no quotes) is:
882b 0be2 79eb 7e88 86cd 3dae 19c1 d267
And not:
a615 9984 9aee b7be 3091 68bc 0ab7 ?
EDIT: The hash changes every time given the same query...what kind of hash is this?
http://www14.wolframalpha.com/input/?i=MD5%22Wolfram+Alpha%22

What is the best way to learn Touch Typing? [duplicate]

This question already has answers here:
Closed 13 years ago.
Duplicate
How do I improve my Typing Skills?.**
I tried the test on http://speedtest.10-fast-fingers.com/. I reach only:
You type 337 characters per minute You
have 58 correct words and you have 1
wrong words
How can I improve my typing speed? What free resources do you know of?
Should I learn the Dvorak Keyboard?
Practice is the best way to get faster. I've found TypeRacer to be a fun and easily accessible game. Using it I quickly got from around 55 words per minute to over 70.
I removed all of the key caps from my IBM Model-M. Since I can't see the letters, I was forced to learn their positions and type without looking at the keys other than to initially orient my hands. When you're not able to take shortcuts, you tend to learn very quickly.
Mario taught me.
I also took the test and reached 371 characters with one mistake. However, for programming, I would not see this as a bad result. I'm more worried about how to use tools like Intellisense and code templates better to speed up my coding. The jedi coding demo shows that you can get much higher gains that way than by doubling your typing speed.
No need to learn Dvorak according to XKCD (and more here).
I also remember reading in The Design of Everyday Things that QWERTY actually does quite a good job or spreading the commonly used letters across your fingers and whilst the Dvorak keyboard is a little better than QWERTY the benefits aren't significant enough to justify making the change. (If I can find my copy I'll try and put up an exact quote.)
As with all things: practice makes perfect. Making posts on StackOverflow is a start :)
Unless if you want to win typing contests, a Qwerty or Azerty keyboard will work just fine.
You don't need to learn Dvorak. I can type 600+ Chars/minute on a querty pad, no problem.
The key is: Repetition, repetition, repetition.
What you're doing while you learn typing is creating new 'highways' straight form your brain's spelling center through your spine to your fingers.
Hence, a good typist will spell a word in his mind, and his fingers 'automatically' type those characters because there's a 10 lane highway from his brain to his fingers. In your case, it's a modest 3 lane highway.
Practice, practice, practice.
Good training for if you already know how to type : www.play4traffic.com
There's also loads of typing tutor programs available online, but the key is repetition and persistance.
My native language is Dutch, so in english it's not as good. I tried the test you gave:
317 points, so you achieved position 194065 of 2927935 on the ranking list
You type 476 characters per minute
You have 80 correct words and you have 4 wrong words
Why?
Why do you want to type more quickly? I seldom find that my fingers or typing speed are the issue when it comes to software development. Sure I have a fair speed, but programming is about SO much more than typing speed. I've been using a QUERTY keyboard since about 1983 so I guess repetition helps.
But learning to hold back on typing and thinking about what it is you're about to do is far more valuable IMHO.
Having said that, I would expect any developer to be able to type reasonably quickly using most fingers, or at least more than their two index fingers ;)
This game taught me a few years back.
The Typing Of The Dead
I can now type fairly quickly without looking at the keyboard. You need to learn to use the correct hand position. Then you must have good discipline and only use the correct finger to type the correct letters. I even went so far as to delete correct chars typed with the wrong finger.
It takes time, and you will almost definitely go slower before you go faster, but it is worth it.

Resources