package com.sf.sdk.demo.safety;

/**
 * 加密Int
 */
public class EncryptInt {

    private int value;
    private byte[] values = new byte[4];

    /**
     * 根据加密的值返回原始值
     */
    public int getValue() {
        return (int) ((values[0] & 0xFF)
                | ((values[2] & 0xFF) << 8)
                | ((values[1] & 0xFF) << 16)
                | ((values[3] & 0xFF) << 24));
    }

    /**
     * 加密存储的值
     */
    public void setValue(int value) {
        this.value = value;   // 原始数值只用于做校验
        values = new byte[4]; // 改变变量存储地址
        values[0] = (byte) (value & 0xFF);
        values[2] = (byte) ((value >> 8) & 0xFF);
        values[1] = (byte) ((value >> 16) & 0xFF);
        values[3] = (byte) ((value >> 24) & 0xFF);
    }

    /**
     * 校验值是否被篡改
     */
    public boolean isValid() {
        return value == getValue();
    }

}