John_Madden,
I am not an expert and this might not meet your needs. Below is a VBscript for both SHA256 and MD5 encryption, Find it here at this link.
https://gist.github.com/jermity/557de47a978f7a7c4a74
I only know Windows. Copy the attached file, and change the extension to .vbs. Open a Command window, cd to the save direcory and type jerhash.vbs to get the usage syntax. The embedded script converts the statenames. This vbs script does not appear to allow a list of values. The 52 state names took 8.2 seconds, and I am sure the overhead for connecting run program adds to that. The attached script shows an alternate method of creating a .bat file. it took on the avg about 0.1 seconds for the 52 items. I did not read in the file. That is another approach. Generate the 500k offline then read in the file.
That's all I have. Regards.
mytbl = New Table("testit", New Column("States", Character,
Values({"Alabama", "Alaska", "Arizona", "Arkansas", "California", "Colorado", "Connecticut",
"District of Columbia", "Delaware", "Florida", "Georgia", "Hawaii", "Idaho",
"Illinois", "Indiana", "Iowa", "Kansas", "Kentucky", "Louisiana", "Maine",
"Maryland", "Massachusetts", "Michigan", "Minnesota", "Mississippi", "Missouri",
"Montana", "Nebraska", "Nevada", "New Hampshire", "New Jersey", "New Mexico",
"New York", "North Carolina", "North Dakota", "Ohio", "Oklahoma", "Oregon",
"Pennsylvania", "Rhode Island", "South Carolina", "South Dakota", "Tennessee",
"Texas", "Utah", "Vermont", "Virginia", "Washington", "West Virginia", "Wisconsin",
"Wyoming"}) ), NewColumn("Code",Character)
);
t1 = tick seconds();
for(i=1, i<=nrow(mytbl), i++,
:Code[i] = Trim(RunProgram(Executable("cscript"),
Options(EvalInsert("\[//nologo c:\temp\jerhash.vbs /A:sha256 /S:"^:States[i]^"]\") ),
ReadFunction("text")
));
);
t2= tickseconds();
show(t2-t1);