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