Hi,
is there a simple subroutine that would allow to get the output of the SHA256 of a variable in Stata? Thanks.
is there a simple subroutine that would allow to get the output of the SHA256 of a variable in Stata? Thanks.
sysuse auto , clear
keep make
gen str64 SHA256 = ""
java:
import com.stata.sfi.*;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.nio.charset.StandardCharsets;
import java.math.BigInteger;
MessageDigest md = MessageDigest.getInstance("SHA-256");
String VarName = "make";
String VarNameSHA256 = "SHA256";
Integer orgstrvar = Data.getVarIndex(VarName);
Integer newstrvar = Data.getVarIndex(VarNameSHA256)
for (long n = 1; n <= Data.getObsTotal(); n++) {
String text = Data.getStr​(orgstrvar,n);
md.update(text.getBytes(StandardCharsets.UTF_8));
byte[] digest = md.digest();
System.out.println(String.format("%064x", new BigInteger(1, digest)));
Data.storeStrf​(newstrvar, n, String.format("%064x", new BigInteger(1, digest)));
}
end
. list in 1/5
+----------------------------------------------------------------------------------+
| make SHA256 |
|----------------------------------------------------------------------------------|
1. | AMC Concord 43a42426f1ef0ff3852283ee136b6c6175d38187938cea5464853a0362d4a00c |
2. | AMC Pacer 75e3c7fd9a49b153a270cf8afe6df395c5171775f5dbd642dceefe5b2689eb6f |
3. | AMC Spirit b8c9a35beea6d0fdf238947ec5a4c7c063a540d6916a731e76bd2f5c5251c76b |
4. | Buick Century 1996df3009e4df9a2ed780572723a5d985971961015f980a3186b8cc2081dae9 |
5. | Buick Electra b0403019f9f9016e2b008e24bb094563e116b85e081c445c831c9c0f60097b96 |
+----------------------------------------------------------------------------------+
sysuse auto, clear
gen str64 SHA256 = ""
local var make // set your variable here
forvalues i = 1 / `c(N)' {
inshell echo -n `=`var'[`i']' | shasum -a 256 | tr -d ' -'
replace SHA256 = r(no1) in `i'
}
. list make SHA256 in 1/5
+----------------------------------------------------------------------------------+
| make SHA256 |
|----------------------------------------------------------------------------------|
1. | AMC Concord 43a42426f1ef0ff3852283ee136b6c6175d38187938cea5464853a0362d4a00c |
2. | AMC Pacer 75e3c7fd9a49b153a270cf8afe6df395c5171775f5dbd642dceefe5b2689eb6f |
3. | AMC Spirit b8c9a35beea6d0fdf238947ec5a4c7c063a540d6916a731e76bd2f5c5251c76b |
4. | Buick Century 1996df3009e4df9a2ed780572723a5d985971961015f980a3186b8cc2081dae9 |
5. | Buick Electra b0403019f9f9016e2b008e24bb094563e116b85e081c445c831c9c0f60097b96 |
+----------------------------------------------------------------------------------+
Comment