智慧工地-API
  1. 公共类
智慧工地-API
  • 对接介绍
  • 基本对接
    • 获取Token
      GET
    • 获取Token(签名验证方式)
      GET
    • 获取授权项目列表
      POST
  • 人员实名制
    • 实名制API对接说明
    • 业务接口
      • 获取工种列表
      • 获取学历列表
      • 获取绑定的项目列表
      • 获取项目区域列表
      • 获取分包公司列表
      • 获取分组列表
      • 获取人员列表
      • 获取项目设备列表
      • 获取考勤记录(出入记录)
      • 获取在场人员列表
    • 统计接口
      • 获取人员年龄分布
      • 获取人员工种分布
      • 获取当天每小时进出场统计
      • 获取本周每天进出场统计
      • 获取本周数量统计
      • 获取当天数量统计
    • 数据同步
      • 说明
      • 同步工人信息
      • 同步工人考勤信息
  • 塔机
    • 获取项目塔机列表
      POST
    • 获取塔机记录列表
      POST
    • 保存塔机基本信息
      POST
    • 塔机记录数据上传
      POST
  • 升降机
    • 报警码
    • 获取升降机设备信息
      POST
    • 获取工地升降机列表(全部)
      POST
    • 获取升降机最新数据
      POST
    • 获取升降机历史记录
      POST
    • 保存升降机配置信息
      POST
    • 上传升降机信息记录
      POST
  • 卸料平台
    • 报警码
    • 获取设备信息
      POST
    • 获取设备最新一条数据
      POST
    • 获取设备数据
      POST
  • 雾炮喷淋
    • 获取喷淋设备列表
    • 控制喷淋设备开关
  • 配电设备
    • 获取配电设备详情
    • 添加设备实时数据
  • 环境监测
    • 添加环境监测数据
    • 获取环境监测数据历史记录
  • 视频监控
    • 视频播放说明
    • 获取视频监控列表
  • 智慧实验室
  • 标准养护室
    • 温湿度传输控制仪
    • 温湿度系统数据转发(推送)协议
    • 智慧工地项目标养室设备
      • 说明
      • 查询设备列表
      • 查询设备温湿度历史记录
    • 查询设备列表
    • 查询设备温湿度数据
  • 公共类
    • 返回结果对象ApiResult
    • RSAUtil类
  1. 公共类

RSAUtil类

import java.io.ByteArrayOutputStream;
import java.security.Key;
import java.security.KeyFactory;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.NoSuchAlgorithmException;
import java.security.PrivateKey;
import java.security.PublicKey;
import java.security.Signature;
import java.security.interfaces.RSAPrivateKey;
import java.security.interfaces.RSAPublicKey;
import java.security.spec.PKCS8EncodedKeySpec;
import java.security.spec.X509EncodedKeySpec;
import java.util.Base64;

import javax.crypto.Cipher;

public class RsaUtils {

/** /
/
*

  • 加密算法RSA
    */
    public static final String KEY_ALGORITHM = "RSA";

/** /
/
*

  • 签名算法
    */
    public static final String SIGNATURE_ALGORITHM = "MD5withRSA";

/** /
/
*

  • RSA最大加密明文大小
    */
    private static final int MAX_ENCRYPT_BLOCK = 117;

/** /
/
*

  • RSA最大解密密文大小
    */
    private static final int MAX_DECRYPT_BLOCK = 128;

org.apache.commons.codec.binary.Base64 bb;

/**

  • 生成公私钥对

  • @return
    */
    public static String[] genKeyPairs() {

    try {
    KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance(KEY_ALGORITHM);
    keyPairGen.initialize(1024);
    KeyPair keyPair = keyPairGen.generateKeyPair();
    RSAPublicKey publicKey = (RSAPublicKey) keyPair.getPublic();
    RSAPrivateKey privateKey = (RSAPrivateKey) keyPair.getPrivate();
    return new String[] { Base64.getEncoder().encodeToString(publicKey.getEncoded()),
    Base64.getEncoder().encodeToString(privateKey.getEncoded()) };
    } catch (NoSuchAlgorithmException e) {
    e.printStackTrace();
    }
    return null;
    }

/** /
/
*

  • 用私钥对信息生成数字签名
  • @param data 已加密数据
  • @param privateKey 私钥(BASE64编码)
  • @return
  • @throws Exception
    */
    public static String sign(byte[] data, String privateKey) throws Exception {
    byte[] keyBytes = Base64.getDecoder().decode(privateKey);
    PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(keyBytes);
    KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
    PrivateKey privateK = keyFactory.generatePrivate(pkcs8KeySpec);
    Signature signature = Signature.getInstance(SIGNATURE_ALGORITHM);
    signature.initSign(privateK);
    signature.update(data);
    return Base64.getEncoder().encodeToString(signature.sign());
    }

/** /
/
*

  • 校验数字签名
  • @param data 已加密数据
  • @param publicKey 公钥(BASE64编码)
  • @param sign 数字签名
  • @return
  • @throws Exception

*/
public static boolean verify(byte[] data, String publicKey, String sign) throws Exception {
byte[] keyBytes = Base64.getDecoder().decode(publicKey);
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes);
KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
PublicKey publicK = keyFactory.generatePublic(keySpec);
Signature signature = Signature.getInstance(SIGNATURE_ALGORITHM);
signature.initVerify(publicK);
signature.update(data);
return signature.verify(Base64.getDecoder().decode(sign));
}

/** /
/
*

  • 私钥解密
  • @param encryptedData 已加密数据
  • @param privateKey 私钥(BASE64编码)
  • @return
  • @throws Exception
    */
    public static byte[] decryptByPrivateKey(byte[] encryptedData, String privateKey) throws Exception {
    byte[] keyBytes = Base64.getDecoder().decode(privateKey);
    PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(keyBytes);
    KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
    Key privateK = keyFactory.generatePrivate(pkcs8KeySpec);
    Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());
    cipher.init(Cipher.DECRYPT_MODE, privateK);
    int inputLen = encryptedData.length;
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    int offSet = 0;
    byte[] cache;
    int i = 0;
    // 对数据分段解密
    while (inputLen - offSet > 0) {
    if (inputLen - offSet > MAX_DECRYPT_BLOCK) {
    cache = cipher.doFinal(encryptedData, offSet, MAX_DECRYPT_BLOCK);
    } else {
    cache = cipher.doFinal(encryptedData, offSet, inputLen - offSet);
    }
    out.write(cache, 0, cache.length);
    i++;
    offSet = i * MAX_DECRYPT_BLOCK;
    }
    byte[] decryptedData = out.toByteArray();
    out.close();
    return decryptedData;
    }

/** /
/
*

  • 公钥解密
  • @param encryptedData 已加密数据
  • @param publicKey 公钥(BASE64编码)
  • @return
  • @throws Exception
    */
    public static byte[] decryptByPublicKey(byte[] encryptedData, String publicKey) throws Exception {
    byte[] keyBytes = Base64.getDecoder().decode(publicKey);
    X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(keyBytes);
    KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
    Key publicK = keyFactory.generatePublic(x509KeySpec);
    Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());
    cipher.init(Cipher.DECRYPT_MODE, publicK);
    int inputLen = encryptedData.length;
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    int offSet = 0;
    byte[] cache;
    int i = 0;
    // 对数据分段解密
    while (inputLen - offSet > 0) {
    if (inputLen - offSet > MAX_DECRYPT_BLOCK) {
    cache = cipher.doFinal(encryptedData, offSet, MAX_DECRYPT_BLOCK);
    } else {
    cache = cipher.doFinal(encryptedData, offSet, inputLen - offSet);
    }
    out.write(cache, 0, cache.length);
    i++;
    offSet = i * MAX_DECRYPT_BLOCK;
    }
    byte[] decryptedData = out.toByteArray();
    out.close();
    return decryptedData;
    }

/** /
/
*

  • 公钥加密
  • @param data 源数据
  • @param publicKey 公钥(BASE64编码)
  • @return
  • @throws Exception
    */
    public static byte[] encryptByPublicKey(byte[] data, String publicKey) throws Exception {
    byte[] keyBytes = Base64.getDecoder().decode(publicKey);
    X509EncodedKeySpec x509KeySpec = new X509EncodedKeySpec(keyBytes);
    KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
    Key publicK = keyFactory.generatePublic(x509KeySpec);
    // 对数据加密
    Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());
    cipher.init(Cipher.ENCRYPT_MODE, publicK);
    int inputLen = data.length;
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    int offSet = 0;
    byte[] cache;
    int i = 0;
    // 对数据分段加密
    while (inputLen - offSet > 0) {
    if (inputLen - offSet > MAX_ENCRYPT_BLOCK) {
    cache = cipher.doFinal(data, offSet, MAX_ENCRYPT_BLOCK);
    } else {
    cache = cipher.doFinal(data, offSet, inputLen - offSet);
    }
    out.write(cache, 0, cache.length);
    i++;
    offSet = i * MAX_ENCRYPT_BLOCK;
    }
    byte[] encryptedData = out.toByteArray();
    out.close();
    return encryptedData;
    }

/** /
/
*

  • 私钥加密
  • @param data 源数据
  • @param privateKey 私钥(BASE64编码)
  • @return
  • @throws Exception
    */
    public static byte[] encryptByPrivateKey(byte[] data, String privateKey) throws Exception {
    byte[] keyBytes = Base64.getDecoder().decode(privateKey);
    PKCS8EncodedKeySpec pkcs8KeySpec = new PKCS8EncodedKeySpec(keyBytes);
    KeyFactory keyFactory = KeyFactory.getInstance(KEY_ALGORITHM);
    Key privateK = keyFactory.generatePrivate(pkcs8KeySpec);
    Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm());
    cipher.init(Cipher.ENCRYPT_MODE, privateK);
    int inputLen = data.length;
    ByteArrayOutputStream out = new ByteArrayOutputStream();
    int offSet = 0;
    byte[] cache;
    int i = 0;
    // 对数据分段加密
    while (inputLen - offSet > 0) {
    if (inputLen - offSet > MAX_ENCRYPT_BLOCK) {
    cache = cipher.doFinal(data, offSet, MAX_ENCRYPT_BLOCK);
    } else {
    cache = cipher.doFinal(data, offSet, inputLen - offSet);
    }
    out.write(cache, 0, cache.length);
    i++;
    offSet = i * MAX_ENCRYPT_BLOCK;
    }
    byte[] encryptedData = out.toByteArray();
    out.close();
    return encryptedData;
    }

/**

  • 对文本进行加密
  • @param text
  • @param publicKey
  • @return
    */
    public static String encryptByPublicKey(String text, String publicKey) {
    try {
    byte[] bs = encryptByPublicKey(text.getBytes("UTF-8"), publicKey);
    return Base64.getEncoder().encodeToString(bs);
    } catch (Exception e) {
    e.printStackTrace();
    }
    return null;
    }

/**

  • 对文本进行加密
  • @param text
  • @param publicKey
  • @return
    */
    public static String encryptByPrivateKey(String text, String privateKey) {
    try {
    byte[] bs = encryptByPrivateKey(text.getBytes("UTF-8"), privateKey);
    return Base64.getEncoder().encodeToString(bs);
    } catch (Exception e) {
    e.printStackTrace();
    }
    return null;
    }

/**

  • 对文本进行解密
  • @param text
  • @param privateKey
  • @return
    */
    public static String decryptByPrivateKey(String text, String privateKey) {
    byte bs[] = Base64.getDecoder().decode(text);
    try {
    byte[] dbs = decryptByPrivateKey(bs, privateKey);
    return new String(dbs, "Utf-8");
    } catch (Exception e) {
    e.printStackTrace();
    }
    return null;
    }

/**

  • 对文本进行解密
  • @param text
  • @param privateKey
  • @return
    */
    public static String decryptByPublicKey(String text, String publicKey) {
    byte bs[] = Base64.getDecoder().decode(text);
    try {
    byte[] dbs = decryptByPublicKey(bs, publicKey);
    return new String(dbs, "Utf-8");
    } catch (Exception e) {
    e.printStackTrace();
    }
    return null;
    }

}

上一页
返回结果对象ApiResult
Built with