I am currently trying to implement a very fast and simple encryption algorithm in Lua for the purpose of using it with ComputerCraft.  The main problem is that bitwise operations in Lua (5.2 at least) are very slow and the implementation ComputerCraft can only handle 32 bit integers in their bit-library, so implementing standard algorithms isn't easy.   On the other hand this is only a game and encryption is merely used to keep others from simply controlling your devices or reading your messages. There is no critical data associated with this, so the encryption can be very weak.  I currently implemented a combination of XOR and random in the following form (pseudo-code):  random.seed( hash(key) ) -- 32 bit seed for i = 1 to str.length do   result[i] = str[i] XOR random.nextByte() end   The good thing about this is that it only uses a single bit-operation and is guaranteed to never exceed 32 bit. Also this is very fast.  Aside from external problems like random entropy, what is an approximate time someone would need to decrypt this using a standard desktop PC? (sophisticated guess is ok, I just want to get an idea)  And if this is just too weak, is there any other algorithm that is more secure, but fast and can be implemented with a minimum amount of bit operations fitting in 32-bit?
I am very new to cryptography (so be kind), but I have a question that may seem silly.   If the one-time pad is the perfect cipher and impossible to crack, why would the following algorithm not be one of the strongest:  To encrypt:   generate a random bit array using a pseudo number generator with the key as the seed  The generated bit array is the size of the data use a simple XOR to encrypt using the generated bit array   To decrypt:   pseudo-random number generator will generate the same bit array with the same seed (the key) generate bit array the same size of the encrypted data run XOR on encrypted data using bit array that's generated   This is very simplified, but you can imagine how for larger encryption you could break down the data into blocks, and in order to ensure that the block bit arrays are random a new seed for each can be derived from the key. So, if $f(k)$ is the pseudo random number generator, and b is the block number, you can encrypt each block with $f(k+b)$. ($k$ is key)   Instead of using a pseudo-random number generator, you could use some hash algorithm to generate the pad.    (assuming you can use equivalently strong keys) would this not be a very strong cipher method? Perhaps it may be strong and heavy on memory since the pad needs to be the size of the data. So during encryption and decryption you need to generate a pad that's equivalent to the size of the data.   Is there a flaw in this algorithm, or would something like this not be practical and much slower than current standards?
Cannot set up multiple desktops (workspaces) The indexer into Dictionary throws an exception if the key is missing.  Is there an implementation of IDictionary that instead will return default(T)? I know about the TryGetValue() method, but that's impossible to use with LINQ. Would this efficiently do what I need?: myDict.FirstOrDefault(a =&gt; a.Key == someKeyKalue);  I don't think it will as I think it will iterate the keys instead of using a Hash lookup. I know that IList is the interface and List is the concrete type but I still don't know when to use each one. What I'm doing now is if I don't need the Sort or FindAll methods I use the interface. Am I right? Is there a better way to decide when to use the interface or the concrete type? Find subexpression to minimize leafcount after replacment with temporary variable Particularly, what is the best snippets package out there?  Features:   easy to define new snippets (plain text, custom input with defaults) simple navigation between predefined positions in the snippet multiple insertion of the same custom input accepts currently selected text as a custom input cross-platform (Windows, Linux) dynamically evaluated expressions (embedded code) written in a concise programming language (Perl, Python, Ruby are preferred) nicely coexists with others packages in Emacs   Example of code template, a simple for loop in C:  for (int i = 0; i &lt; %N%; ++i) {   _ }   It is a lot of typing for such common code. I want to invoke a code template or snippet which inserts that boilerplate code for me. Additionally it stops (on TAB or other keystroke) at %N% (my input replaces it) and final position of the cursor is _. If I can generally reach web pages on the Internet but can't reach a specific one, how do I troubleshoot what the cause is as an end user?       This question was a .   Read the  for more details or  yourself Benchmark (hash rate) for SHA-3 (SHAKE128) To estimate the time for brute-force attack we need to compute keyspace size divided by hash rate, where the hash rate (hash/second) varies depending on the computer's capabilities.  The website  shows the hash rate for different computers.  Can you explain the following two confusing phenomena?   The hash rate decreases as the message size increases. Core i3 has a higher hash rate than Core i7 for SHAKE128. How to Find Nearby iOS Devices (GPS locations) using same app Finite Cartesian Product of Countable sets is countable? Is the finite Cartesian Product of Countable sets countable?  If possible, could you give a bijection that would work for any example?  Any help would be appreciated. Word or Phrase for "Easily Swayed" What word or phrase best communicates the idea that a human (or other sentient being) is easily swayed, particularly between moral good and evil? Words I have found that are close are:   Impressionable - Easily influenced because of a lack of critical ability.   Implies that the subject lacks critical skills, and misses the concept of good and evil.  Gullible - Easily persuaded to believe something   Misses the concept of good and evil    I created a typical angels and demons scenario to demonstrate the polar extremes of the the spectrum. In this scenario, I lack the word to describe the humans, who can be influenced towards either end of the spectrum if impressed upon by an external entity.     The angels are devoted to good, and are immovable in their ideals. The demons are wicked, and will feign morality only to manipulate others. Both prey upon the humans, who are ____________.   I think that the key here is the spectrum of good an evil. Here are examples of other spectra and their associated words, for comparison.   Easily pushed from calm to angry: Temperamental Easily moved from determined to hopeless: Weak-willed Easily influenced by propaganda: When changing fields, should I focus more on describing past research or connecting it to the new area in my statement of purpose? I want to change my field from molecular biophysics to theoretical ecology. While they are basically required some same basic background (physics, math, programming), the rest is quite irrelevant. In my current draft of this part, about a half is about this the problem and the result of the work, another half is for my contribution and what I've learnt. Having said that, should I focus less on describing the work and leave space for the thing that will be useful for the next research?  Below is copy from .     What have you already done? What problems have you solved, or at least worked on? What independent projects have you been part of? What were your key contributions? What did you learn? What did you teach the world? How do your results compare to what was already known? What original ideas are you most proud of? Be specific, technical, credible, and confident (but not arrogant). Refer the reader to your web page for more details. Have a web page with more details: preprints, project reports, source code, videos, etc. Why does the standard error of the intercept increase the further $\bar x$ is from 0? The standard error of the intercept term ($\hat{\beta}_0$) in $y=\beta_1x+\beta_0+\varepsilon$ is given by $$SE(\hat{\beta}_0)^2 = \sigma^2\left[\frac{1}{n}+\frac{\bar{x}^2}{\sum_{i=1}^n(x_i-\bar{x})^2}\right]$$ where $\bar{x}$ is the mean of the $x_i$'s.  From what I understand, the SE quantifies your uncertainty- for instance, in 95% of the samples, the interval $[\hat{\beta}_0-2SE,\hat{\beta}_0+2SE]$ will contain the true $\beta_0$. I fail to understand how the SE, a measure of uncertainty, increases with $\bar{x}$. If I simply shift my data, so that $\bar{x}=0$, my uncertainty goes down? That seems unreasonable.  An analogous interpretation is - in the uncentered version of my data, $\hat{\beta}_0$ corresponds to my prediction at $x=0$, while in the centered data, $\hat{\beta}_0$ corresponds to my prediction at $x=\bar{x}$. So does this then mean that my uncertainty about my prediction at $x=0$ is greater than my uncertainty about my prediction at $x=\bar{x}$? That seems unreasonable too, the error $\epsilon$ has the same variance for all values of $x$, so my uncertainty in my predicted values should be the same for all $x$.  There are gaps in my understanding I'm sure. Could somebody help me understand what's going on? Converting points to raster in ArcGIS? The feeling of always wanting newer possessions? I am looking for a word that describes the emotion or feeling of an intrinsic want of a new and better possession. Covetous or envious seem a bit too focused on the other other person's possession of the desired object whereas I am looking for something that is defined by the internal thoughts we have when seeing an advertisement for the latest iPhone or life-changing new service.    but I am wondering if there is a word with less emphasis on the second entity? Otherwise, would I covet new things from Amazon or Apple? Can I be envious of corporations?  For example, I just bought a new car and now, looking at my slightly out of date television, I feel the need to upgrade my T.V. with a newer, shiny one from Amazon. Would I be coveting that T.V. which Amazon sells?     I saw the ad for the latest iPhone, the iPhone 3000, and feel that my current phone is inadequate. I am a(n) ______ person, since I always desire something better than what I currently possess. If I was a caveman with a sharpened stick, I'd want your sharper, pointier stick.   I feel like there is probably some niche German word for exactly this, but I'm unsure it exists in English. Thanks! How do I convert an argument list to a sequence of arguments? Windows 10 64-bit requirements: Does my CPU support CMPXCHG16b, PrefetchW and LAHF/SAHF? I'm currently trying to find out whether or not it would be a good idea to update my slightly dated notebook (Windows 7, 64-bit) to Windows 10. The problem is that Microsoft states in their  that to use the 64-bit version of Windows 10, a processor which supports CMPXCHG16b, PrefetchW and LAHF/SAHF is needed. I know that my processor is 64-bit (Intel Core i5-2430M @ 2.40 GHz) but I don't know how to find out whether it supports CMPXCHG16b, PrefetchW and LAHF/SAHF, and I have no idea what these mean.  I tried using Google and got no results that made sense to me, only some comparison of my i5 and a similar AMD processor. I also checked Intel's ARK website. If somebody could point me to where I can get more info I would be really grateful. I was wondering if quantum particles do actually  exists in two different states simultaneously and if it has been proven they do indeed exists in a superposition of states.  How has it been figured out since observing it would collapse the wave-function into one single state (two superposition of states into one ) as it has been mentioned in the Schrodinger's cat experiment? How would I change file permissions if the file name has a space in it in linux I would like to know how would I rename and change file permissions of a file that contains a space in the name on Linux.  Example  The name of my file is: my file   I have tried mv my%20file my_file  I have also tried chown -R 755 my%20file  but both of these don't work! Why does python 2.5.2 have the following behavior  &gt;&gt;&gt;[2].extend([]) == [2] False  &gt;&gt;&gt; [2].extend([]) == None True  $ python --version Python 2.5.2   I assume I'm not understanding something here, but intuitively I'd think that [2].extend([]) should yield [2] What is the best way to iterate over a dictionary?