Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 9 years ago.
Improve this question
One of the distinguishing features of a good encryption algorithm, is that it is easy to encrypt, and hard to crack. Are there any that are easy enough for average folk to remember, and calculate by hand, and still stand up to brute force attacks on a computer.
Imagine, a prisoner (with pen and paper) sending a message to another inmate, and the guards seize the handwritten message - and put their prison-crypto-cracking department on it.
Currently, I am thinking TEA is the best candidate, but pretty hard to remember I think.
Yes, there are examples of strong cryptographic algorithms which can be implemented by hand. For example, in Neal Stephenson's classic - the Cryptonomicon, there's an algorithm called Solitaire (or Pontifex) developed by Bruce Schneier for use with a deck of playing cards. Here is Wikipedia's explanation, and here is the description from the author's home page.
One-time pads are do-able by hand and impossible to crack, unless the opponent gets hold of the one-time pad. Have each prisoner make up a bunch of one-time pads, number them according to some scheme, have them exchange the pads, then when transmitting the message have a set of cues as to which pad will be used, e.g. if you hand it at this part of the prison or with this gesture then use this pad, etc.
Bruce Schneier's solitaire cipher is designed to be operated by hand using only a deck of cards. There is also the VIC cipher actually used by a Soviet spy in the 1950s. Both are cumbersome to actually operate by hand, though it is possible.
Related
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 7 years ago.
Improve this question
As a course project, I have to implement an algorithm on FPGA. Currently I'm considering arithmetic algorithms and ideas like implementation of 4 basic operators for floating point numbers come to mind. As I'm new to such topics I'd be thankful if anyone suggests an algorithm which is worthwhile for implementing.
Your question is very vague, and there are infinite algorithms you could implement. Some suggestions with different difficulty level:
Very easy
Audio volume control.
Audio echo.
These are technically not "worthwhile" implementing in hardware, but audio stuff usually makes for impressive live demonstrations. Even if the algorithm is very easy.
Easy
FIR or IIR filters (low pass, high pass, band pass, ...)
CRC
Checksum
These algorithms are implemented in hardware all the time. They are very typical examples. Yet still quite easy to implement.
If you start out with audio volume control or echo, you can later add filters to make it a little bit more advanced.
Medium/hard
Various encryption algorithms, SHA, AES, ...
FFT
JPEG compression
Regarding floating point algorithms: You typically would never use floating point math in an FPGA unless you absolutely have to.
All algorithms which are possible to do with fixed point math, should be implemented in fixed point math.
You would also never use division in an FPGA, unless you absolutely have to. It is desirable to replace all divisions with multiplications whenever possible.
Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 8 years ago.
Improve this question
Let's suppose that androids which are physically alike humans are a reality.
What would be an algorithm to make it interact with human beings if we want it to:
1) be indistinguishable from regular people in behavior
2) be as equally friendly to everyone as possible?
I understand that it is very hard to write an algorithm like that. I can, however, imagine an android simulating human behavior fairly well with some sort of machine learning technique.
But how would we train it? The act of collecting data would also be a big big problem.
Which machine learning technique would be ideal?
If you consider requirement 1 to be a hard requirement, such an algorithm would beat the Turing Test at least to some extent, so it would be a pretty advanced (world-class) algorithm.
Your problem basically equates to beating the Turing Test, so check the linked article to see the scientific literature produced by people working on this problem.
Assuming massive data availability and processing power are basically unbounded, I believe an Artificial Neural Network would be the best runner-up to base such an algorithm on.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
This question appears to be off-topic because it lacks sufficient information to diagnose the problem. Describe your problem in more detail or include a minimal example in the question itself.
Closed 8 years ago.
Improve this question
We have a user, with a music library of 100 songs. Out of those he loves 20, he hates 10 and there are 5 he neither hates nor loves. He never listened to the remaining 65.
Question: What kind of algorithm(s) is/are used to scan the remaining 65 songs and find out music the user will like?
Do some research on a product called MusicIP, it had some very clever algorithm fingerprinting technology. It converted the track to WAV and then created a fingerprint, then some clever magic to match songs that were similar.
To suggest new unfamiliar content to a user, the general approach is to use machine learning, specifically collaborative filtering, which is often used for recommender systems. The idea is to use the knowledge of the crowd, and finds people (or groups) that have similar taste to yours, and recommend new items that they tend to like.
An alternative is creating a classification algorithm for like/dislike, but that might require extracting features from each song that will describe the essense of the problem, and that's usually not trivial at all.
Some classification algorithms you might want to try are SVM, Naive Bayes, neural networks, Decision trees and more. The real challenge, as I mentioned would be to find the right features for the problem.
Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 11 years ago.
Improve this question
I have a set of keys e.g (IENDKCAGI, RZRLBYBFH) and now I want to find the algorithm of it. I allready know the basics of cryptography but I don't know how to start reverse engeneering the algorithm.
I don't search a certain algorithm, I'm just interested how the process would look like.
cheers
EDIT: I don't want to crack any key!!! I buy the software I need!
I'm just interested in the approach of reengeneering a checksum from the result, thats my conceptual formulation, without knowing the algorythm. This topic is more theorethical, but in my opinion it has a certain relevancy also for stackoverflow
You can analyze it to some degree, at least enough to rule out several possibilities. You say you have a set of keys, and I'm not sure what you mean by that, so pretend for discussion that the left value is the plaintext and the right value is the encrypted equivalent.
You can determine that the left value has only one repeating character, "I", and that the right value has two, "R" and "B". From that you can rule out a simple substitution cipher, even one with characters rearranged.
Both values appear to have only characters in the range [A-Z] (a larger sample would help confirm), so you can rule out encryption techniques that yield binary results, like most block and stream ciphers. In fact, use of such a limited character set implies that it was designed for use by people rather than machines. That would imply a relatively simple cipher technique, but may also involve an additional key to which you do not have access.
Closed. This question is off-topic. It is not currently accepting answers.
Want to improve this question? Update the question so it's on-topic for Stack Overflow.
Closed 10 years ago.
Improve this question
I'm looking into a little project of designing my own symmetric crypt algorithm. It will be for mainly file encryption.
What is the design process for such a project?
First lesson - don't.
Second lesson - learn cryptanalysis. If you aren't aware of how crypto schemes are already being broken, how will you assess how "strong" or "weak" your own algorithms are.
The self study paper I linked to above is aging a bit however. There are newer attacks (such as the recent bi-clique attack against AES) which won't be covered there.
There's also a fledgling crypto stack exchange site, which may be a better place to ask questions, if you actually intend to study crypto seriously (rather than "I've invented the best crypto system ever, nobody will ever be able to crack it").
Build an algorithm that is resistant to...
Known plain-text attacks: http://en.wikipedia.org/wiki/Known-plaintext_attack
Chosen plain-text attacks: http://en.wikipedia.org/wiki/Chosen_plaintext_attack
Differential cryptoanalysis: http://en.wikipedia.org/wiki/Differential_cryptanalysis
Linear cryptoanalysis: http://en.wikipedia.org/wiki/Linear_cryptanalysis
My specific suggestion is that you start with a cryptographically secure random number generator (http://en.wikipedia.org/wiki/Cryptographically_secure_pseudorandom_number_generator), seed said generator with your symmetric encryption key and work from there avoiding the attack vectors above.