See https://news.ycombinator.com/item?id=28992667
There's a good comment there that the Microsoft ASP.NET help pages specifically call out an SSN as a terrible thing to put into _VIEWSTATE :)
This Base64 was placed inside an HTML document. That's a bit like a Word document, except the formatting (bold, underline, big, small, Comic Sans) is written next to the text, so the computer knows how to display it. HTML is designed to be human-readable; in fact, it's designed for humans to write directly, using a text editor.
Here's an example of an HTML document, and here's a Base64 decoding table. (There's also a printout from Wikipedia, if you want to know how people can do it in their heads.) The jury should be able to read this SSN off, with no prior experience, in about ten minutes.
This was sent, by the State's computers, to every user of the system, due to a programming error.
<!DOCTYPE html>
<html>
<head>
<title>My Webpage</title>
</head>
<body>
<h1>This is an HTML document</h1>
<p>
It might not look like much, but it's a website!
This is what they look like to computers, and
web developers. There is usually other code behind
the scenes, where sensitive data should be stored,
but this is the public part.
</p>
<!-- Internal state (public component).
Should not contain sensitive data! -->
<input type="hidden"
name="__VIEWSTATE"
id="__VIEWSTATE"
value="dDwxMjM7dDxwPGw8
U1NOOz47bDw5MTIt
MzgtNjU0Nzs+Pjs7
Pg==">
</body>
</html>> the newspaper found that teachers’ Social Security numbers were contained in the HTML source code of the pages involved.
and later:
> In reality, the Post-Dispatch discovered the vulnerability and confirmed that the nine-digit numbers were indeed Social Security numbers.
[0] https://www.stltoday.com/news/local/education/missouri-teach...
Given this, I think the journalist over-simplified the situation in their story and that the "F12" jokes are unjustified. Recognizing there's a disclosure of private information here requires a lot more technical knowledge beyond the ability to view the HTML source.
The governor is still wrong for pursuing this and what the newspaper did was right, given that they disclosed it to the responsible parties and didn't publish until the problem site was taken down.
It's hard to call this encryption.
Okay, maybe that's not very efficient.
Each pair of Base 64 characters contains a single ASCII character, plus some change. That would take three lookup tables of about 1000 entries each; given that the “change” letters could use character ranges, that would take 3 or 4 sheets of A4 (or A3, if you wanted large print).
Best I've done so far is to recognize that "eyJ" means I'm probably looking at JSON, since `{"` followed by any letter will always begin with that.
> It's hard to call this encryption.
It's a lie to call this encryption. It is encoding, not encryption.