在前后端交互中,当涉及到需要脱敏字段的传输时,可以使用一种脱敏算法对字段进行脱敏处理,例如使用MD5、SHA等加密算法。

对于前端传输给后端的脱敏字段,后端需要对其进行还原。一种常用的方法是在后端存储原始字段的同时,额外存储一个脱敏字段。当需要还原脱敏字段时,后端可以根据存储的原始字段和脱敏字段进行还原。

下面是一种JAVA实现的示例代码:

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class DesensitizationUtils {

    // 对原始字段进行脱敏处理,并返回脱敏后的字段
    public static String desensitize(String originalField) {
        // 使用MD5算法对原始字段进行脱敏处理
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            md.update(originalField.getBytes());
            byte[] digest = md.digest();
            StringBuilder sb = new StringBuilder();
            for (byte b : digest) {
                sb.append(String.format("%02x", b & 0xff));
            }
            return sb.toString();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        return null;
    }
    
    // 根据原始字段和脱敏字段,还原脱敏字段的值
    public static String restore(String originalField, String desensitizedField) {
        // 对原始字段进行脱敏处理,然后与脱敏字段进行比较
        String desensitizedValue = desensitize(originalField);
        if (desensitizedField.equals(desensitizedValue)) {
            return originalField;
        }
        // 如果脱敏字段不匹配,则返回空值或者提示错误
        return null;
    }

    public static void main(String[] args) {
        // 示例代码
        String originalField = "123456";
        String desensitizedField = desensitize(originalField);
        System.out.println("Desensitized Field: " + desensitizedField);
        String restoredField = restore(originalField, desensitizedField);
        System.out.println("Restored Field: " + restoredField);
    }
}

上述代码使用MD5算法对原始字段进行脱敏处理,并将脱敏后的字段进行存储或传输。在还原阶段,根据原始字段和脱敏字段进行比较,如果匹配,则返回原始字段的值,否则返回空值或者错误提示。

需要注意的是,MD5算法是单向不可逆的,因此无法从脱敏字段直接还原出原始字段的值。在还原阶段,只能通过对原始字段再次进行脱敏处理,并与脱敏字段进行比较来判断是否匹配

前后端交互时只给脱敏字段提交时如何对这个脱敏字段进行还原?请帮忙分析并给出具体的JAVA实现代码

原文地址: https://www.cveoy.top/t/topic/ihJf 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录