注册 登录
编程论坛 VFP论坛

请教java的VFP应用

hwf298 发布于 2024-11-27 08:42, 519 次点击
有一段java代码,请教各位老师大佬们如何转为在vfp中应用(转换为VFP9.0):
package com.lou.springboot;
import
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.time.LocalDateTime;
import java.time.ZoneOffset;
import java.util.Random;

public class SignUtil {
    private SignUtil() {
    }

    public static void main(String[] args) {
         String xRioNonce = getRandomString(32);     //随机数
        String xRioTimestamp = String.valueOf(getCurrentUnixSeconds());    //时间戳
        String signature = getSHA256Str(xRioTimestamp + secretKey + xRioNonce + xRioTimestamp);   //签名

    }

    /*** 获取随机数 */
    private static String getRandomString(int length) {
        String str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        Random random = new Random();
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < length; ++i) {
            int number = random.nextInt(62);
            sb.append(str.charAt(number));
        }
        return sb.toString();
    }

    /*** 获取当前时间戳 */
    private static long getCurrentUnixSeconds() {
        ZoneOffset zoneOffset = ZoneOffset.ofHours(8);
        LocalDateTime localDateTime = LocalDateTime.now();
        return localDateTime.toEpochSecond(zoneOffset);
    }

    /*** 使用SHA-256算法进行加密 */
    private static String getSHA256Str(String str) {
        String encodeStr = "";
        try {
            MessageDigest messageDigest = MessageDigest.getInstance("SHA-256");
            messageDigest.update(str.getBytes("UTF-8"));
            encodeStr = byte2Hex(messageDigest.digest());
        } catch (NoSuchAlgorithmException var4) {
            var4.printStackTrace();
        } catch (UnsupportedEncodingException var5) {
            var5.printStackTrace();
        }
        return encodeStr;
    }

    private static String byte2Hex(byte[] bytes) {
        StringBuffer stringBuffer = new StringBuffer();
        String temp = null;
        for (int i = 0; i < bytes.length; ++i) {
            temp = Integer.toHexString(bytes[i] & 255);
            if (temp.length() == 1) {
                stringBuffer.append("0");
            }
            stringBuffer.append(temp);
        }
        return stringBuffer.toString();
    }
}
 

[此贴子已经被作者于2024-11-27 08:44编辑过]

9 回复
#2
hwf2982024-11-27 14:59
回复 楼主 hwf298
主要是有两点麻烦老师们能否提供:
1、 /*** 获取随机数getRandomString(32) */:这个请大师们提供VFP代码或相关dll
2、/*** 使用SHA-256算法进行加密 getSHA256Str()*/: 这个请大师们提供相关SHA-256加密的dll
#3
iswith2024-11-27 16:15
这个VFP就可以直接调用,不用DLL就可以啦,你加我WX我教你如何直接使用VFP调用这些函数,很简单几行代码就搞定了

[此贴子已经被作者于2024-11-27 16:17编辑过]

#4
hwf2982024-11-27 16:45
回复 3楼 iswith
可否回贴指点下,谢谢

[此贴子已经被作者于2024-11-27 16:51编辑过]

#5
iswith2024-11-27 19:30
只有本站会员才能查看附件,请 登录

我写了一个你看看
#6
hwf2982024-11-28 08:37
回复 5楼 iswith
老师,这是函数引用,只是这函数怎样用VFP代码实现或怎样借用其它例如dll等。因不懂其它知识,所以问题老师们,谢谢
#7
sxzjbb2024-11-29 10:08
时间戳,VFP调用JS可以得到,因为VFP的时间戳没有毫秒数.getRandomString(32) 随机数是什么意思?
getSHA256Str
HASH()声明: Hash(cStringtoHash[, nHashType])
参数: cStringtoHash - 要计算哈希值的明文字符串。2 = SHA256


#8
iswith2024-11-29 21:26
基本这个prg可以完成任何加密方式,主流加密都有
只有本站会员才能查看附件,请 登录
#9
wcx_cc2024-12-01 11:38
vfp有函数 rand()能取随机数,是否能用?如果有 hmac.dll 文件,可以调用试试:
     Declare String HmacSHA256 in hmac.dll String, String
      cKey = 'abc'
      ? HmacSHA256('cData', cKey)
 
#10
hwf2982024-12-02 08:41
回复 8楼 iswith
已自己另想办法解决,同时谢谢回贴的老师们。
1