In above picture you can see a AES state array over 2 rounds through the S- and P-Boxes of AES. It's taken from  and intends to show how 2 rounds of transformation are necessary to achieve full diffusion after only the first byte has changed.  If one would MixColumns() before MixRows() diffusion, one would reach diffusion one step earlier. So I wonder what is the reason to ShiftRows() before MixColumns()?
I was trying to understand the internal structure of AES (Advanced Encryption Standard)  The Standard order of steps within a round:   Substitute Bytes Shift Rows Mix Columns Add Round Key   Substitute Bytes, Shift Rows &amp; Mix Columns satisfies the two most important properties required for a secure cipher i.e confusion and diffusion   Substitute Bytes provides Confusion i.e. that each binary digit (bit) of the ciphertext should depend on several parts of the key.  Shift Rows along with Mix Column provides Diffusion i.e. if we change a single bit of the plaintext, then (statistically) half of the bits in the ciphertext should change  Changing the order of Step 1 and Step 2 won't have any effect. But to what extent can we change the order of other steps? Does it weakens the security of AES, and if so, how?
How can I make a special file that executes code when read from Most files on a Linux system are normal files, i.e. they are saved on disk and reading from them just reads from a specified chunk of memory on the disk.  How can I make something that behaves like a file in terms of being able to read from it as one would a normal file, but is actually returning programmatically generated data instead?  As a concrete example, a file that downloads the current google.com and returns it, such that cat ~/myspecialfile would output the contents of google.com to stdout? By accident, I recently removed some videos from my phone. I tried to restoring them with Recuva and TuneUp Utilities and the results were "undf" files.  I tried to open with VLC, Media Player Classic and other video players to no avail. Where/how do I find out the codec for these files?   I would really love to be able to watch these videos again. Can Freestyle draw lines when an object is behind a transparent plane? Can Freestyle draw lines when an object is behind a transparent plane (or any other transparent object)? The render below shows the issue, the freestyle lines that should be drawn on lower arm and hand don't get drawn. How do you prevent oatmeal from overflowing? Whenever I cook oatmeal (whether steel cut oats in a rice cooker or pan, or rolled oats in the microwave), it always overflows. How do you prevent this?   Do you just use a bigger container? Do you just take the pan off the heat or bowl off the microwave when it's about to overflow? I've also heard that if you put dried fruit or something like that along with the oatmeal while cooking, that helps prevent it from overflowing -- is this true? How to insert an item into an array at a specific index (JavaScript)? Deep cloning objects Extra slash added to the chat room URLs in the side bar General system specs for large scenes in blender What are the system requirements for working with complex geometry in Blender? Things like RAM, GPU, CPU etc.? I am trying to monitor multiple JVMs running on different servers through an ssh tunnel.  Thanks to one of the UNIX gurus here, I have managed to get this running for a single server by:   Run jstatd on the target server Set up Visual VM to use 9696 as its socks proxy port. On my local PC, run:  ssh -L 2222:server1:22 bastion-host  On my local PC, run:  ssh -o port=2222 -D 9696 -L 1099:localhost:1099 localhost    This does the trick. Now when I try and tunnel to a second server I try:   On my local PC, run:  ssh -L 3333:server2:22 bastion-host  On my local PC, run:  ssh -o port=3333 -D 9696 -L 2099:localhost:1099 localhost    However, the last step complains with:  bind: Address already in use channel_setup_fwd_listener: cannot listen to port: 9696   Has anyone managed to do something similar?  Update:  The reason this is so complex is that jstatd is an RMI server application:    As with RMI applications, these register with an rmiregistry. Using rmi through a firewall requires me to use SOCKS as described here:    Unfortunately, visualvm only lets me set the SOCKS proxy port once, and the -D option won't allow me to forward the same local port to both servers... It is suggested as an exercise in Serge Lang's book "Algebra" to show that the commutator subgroup $G^c$ of a group $G$ is a normal subgroup.   I'd like to do that but I am afraid I need help,   I think the first thing I need to figure out is how a general element in the commutator subgroup looks like, so that I can check that the defining condition for normality is satisfied.  That is, supposing for a moment that a general element in $G^c$ is denoted by $g$, I need to show that $aga^{-1} \in G^c,$ for all $a \in G$.  But here I get stuck, first because I am unsure how to write a general element in $G^c$ - a simple product in $G^c$ is of the form $xyx^{-1}y^{-1}aba^{-1}b^{-1}$ where $a,b \in G$. I cannot see a way to simplify this - I am sure there is one, but somehow I am blind today.  The second thing then is, even if one tries out the conjugation of a simple element like $xyx^{-1}y^{-1}$ in $G^c$, again not simplification offers itself easily I think .. what am I missing ?  An alternative would be to find a homomorphism of $G$ whose kernel is precisely $G^c$ - here I tried to think of this as a map $G \times G \to G$ but whatever I cook up is not a homomorphism.  Thanks for your hints !! How to check if a String contains another String in a case insensitive manner in Java? How do I rename a domain and preserve SEO? Phantom spaces in listings I have a problem with SQL code in a PDF document. For code representation I'm using the listings package. Everything works perfect until I copy-paste that code from the created PDF document. I get some phantom spaces in string type. When people are reading my PDF document, they need to copy-paste some of the code. Visually the code looks good in PDF, but when I try to copy-paste my code to NotePad or any other editor I get some unexpected spaces in strings. In the example below, when I copy-paste my SQL code, instead of getting:  SELECT ST_Area(the_geom)   FROM katastar   WHERE kc_broj = '1414';   I get  SELECT ST_Area(the_geom)   FROM katastar   WHERE kc_broj = ' 1414 ';   See the spaces in between quotes.  \documentclass{article} \usepackage{listings,xcolor}  \lstset{  tabsize=4,         basicstyle=\scriptsize,         %upquote=false,         aboveskip=\baselineskip,         columns=fixed,         showstringspaces=false,         extendedchars=true,         breaklines=true,         prebreak = \raisebox{0ex}[0ex][0ex]{\ensuremath{\hookleftarrow}},  frame=single,         showtabs=false,         showspaces=false,         identifierstyle=\ttfamily,         keywordstyle=\color[rgb]{0,0,1},         commentstyle=\color[rgb]{0.133,0.545,0.133},         stringstyle=\color[rgb]{0.627,0.126,0.941},  language=SQL }  \begin{document} \begin{lstlisting} SELECT ST_Area(the_geom)   FROM katastar   WHERE kc_broj = '1414'; \end{lstlisting} \end{document} Re-install Ubuntu without losing data in home folder Lookup Tables Best Practices: DB Tables... or Enumerations If we have to store the available positions at a company (i.e. Manager, Team Lead, ... etc). What are the best practices for storing it? I have two opinions with comments... "sure, welcoming yours"        Storing it as DB table with columns ID and Name, and deal with it using queries and joins.     Storing it as Enum and forget about the DB table.    In my opinion, I will choose the first solution if I have changing items. So that I won't hard code these options as Enum. I may choose the Enum solution, if I have no doubt that data won't change (for example, Gender: Male, Female).  NOTE: I code in English, and the UI Culture may be Arabic. If I will work with the Enum Solution, I will hard code the culture-based strings in the presentation layer, is it okay from the best practices perspective!!!!  I would like to know your opinions and if my thoughts correspond to what is most recommended "Best Practices"?? Accessing my Windows 7 files from my Ubuntu account Differences between astronomy, astrophysics and cosmology? Suppose Player 1 has a Dragon on the table and  in hand, while Player 2 has two Spiders on the table.  Player 1 chooses to attack with the Dragon and Player 2 chooses to block with one of the Spiders.  Before combat damage is to be dealt, Player 1 uses Unsummon on the blocking Spider.    Does Player 2 take any life damage from the attacking Dragon? An insurance company supposes that the number of accidents that each of its policyholders will have this year is Poisson distributed, with a mean depending on the policyholder: the Poisson mean Λ of a randomly chosen person has a Gamma distribution with the Γ(2, 1)-density function fΛ(λ) = λe−λ (λ > 0). Find the expected value of Λ for a policyholder having x accidents this year (x = 0, 1, 2, . . .).  I am not sure how to incorporate the gamma parameters. So far I have found P(X = n|Λ = λ) = Poisson(λ) and fΛ(λ)= Exp(λ) so by integrating P(X = n|Λ = λ)fΛ(λ) then letting the integral of Gamma (n + 2, 2) equate to 1, I have worked out P(X = n) = (n + 1)/2^(n+2). How do you find the expected value of Λ from that? I have seen that a Gamma-Poison mix has E(X) = αβ which would give 2 but I have tried integrating fΛ(λ) and can't seem to get 2. We need to prove that $$\dfrac{\sin\theta - \cos\theta + 1}{\sin\theta + \cos\theta - 1} = \frac 1{\sec\theta - \tan\theta}$$  I have tried and it gets confusing.