精华内容
下载资源
问答
  • signtool sign sha256

    2020-06-29 16:27:18
    signtool 微软参考文档https://docs.microsoft.com/zh-cn/windows/win32/seccrypto/signtool 使用signtool签名参考文档...signtool.exe sign /f MyCert.pfx /p <PFX password> /...

    signtool 微软参考文档 https://docs.microsoft.com/zh-cn/windows/win32/seccrypto/signtool

    使用signtool签名参考文档 https://docs.microsoft.com/en-us/windows/win32/seccrypto/using-signtool-to-sign-a-file

    sha1签名方式

    signtool.exe sign /f MyCert.pfx /p <PFX password>  /t http://timestamp.comodoca.com /v foo.exe

    sha256签名方式

    signtool.exe sign /f MyCert.pfx /p <PFX password> /fd sha256 /tr http://timestamp.comodoca.com/?td=sha256 /td sha256 /as /v foo.exe

    sha256,签名的时候,一定要把/fd sha256 /td sha256结合使用

    参考文档https://www.getssl.cn/support/%E4%BB%A3%E7%A0%81%E7%AD%BE%E5%90%8D-signtool/

     

    展开全文
  • Scrolling Sign

    2017-11-01 16:43:32
    A given sign displays exactly k characters. When the sign is switched on, all of the character positions are initially empty (showing spaces). In each time interval, all of the characters on the sign...
  • sign函数

    千次阅读 2018-03-30 15:06:43
    sign(x)或者Sign(x)叫做符号函数,在数学和计算机运算中,其功能是取某个数的符号(正或负):当x&gt;0,sign(x)=1;当x=0,sign(x)=0;当x&lt;0, sign(x)=-1;在通信中,sign(t)表示这样一种信号:当t≥0,...
    sign(x)或者Sign(x)叫做符号函数,在数学和计算机运算中,其功能是取某个数的符号(正或负):
    当x>0,sign(x)=1;
    当x=0,sign(x)=0;
    当x<0, sign(x)=-1;
    在通信中,sign(t)表示这样一种信号:
    当t≥0,sign(t)=1; 即从t=0时刻开始,信号的幅度均为1;

    当t<0, sign(t)=-1;在t=0时刻之前,信号幅度均为-1


    展开全文
  • sign签名

    千次阅读 2019-04-28 13:30:53
    sign签名是根据用户请求的参数和值(不包括sign),结合分配给客户端的秘钥(securityKey),通过算法生成的签名。在算签名时,首先要按照每组的key=value的字母顺序做排序(升序降序自己拿主意),然后对key和vaule...

    做接口开发首先需要注意的是接口的安全性,接口的安全性可以用Https来做或者直接在服务器层面设置ip白名单,我用的是sign签名来确保接口的安全性。
    sign签名是根据用户请求的参数和值(不包括sign),结合分配给客户端的秘钥(securityKey),通过算法生成的签名。在算签名时,首先要按照每组的key=value的字母顺序做排序(升序降序自己拿主意),然后对key和vaule(使用utf-8编码,特别注意包含中文的参数值的编码)连接成没有等于号的字符串;然后在最后加上客户端的秘钥(securityKey)然后通过算法生成签名。
    在此需要注意,前端必传的字段有:
    appkey(String类型,必填,调用者第三方公钥)
    timeStamp(String类型,必填,当前时间戳 格式(自己拿主意,只要前后端一致就行))
    sign(String类型,必填,(参数+必传参数+私钥(securityKey,))的算法加密串)
    假如参数有:
    String appkey=“abcd”
    String timeStamp=“20190422125727”
    String aaa=“aaa”
    String bbb=“bbb”
    该客户端的秘钥是securityKey=1234567890
    按照key=value升序排序是
    aaa=aaaappkey=abcdbbb=bbbtimeStamp=20190422125727
    连接成没有等于号的字符串
    aaaaaaappkeyabcdbbbbbbtimeStamp20190422125727
    拼接客户端秘钥
    aaaaaaappkeyabcdbbbbbbtimeStamp201904221257271234567890
    然后使用加密算法加密
    sign=(aaaaaaappkeyabcdbbbbbbtimeStamp201904221257271234567890)加密后的串
    在贴代码之前需要和大家说的问题是,post请求获取参数是可能是form表单格式或者是json格式,不同的格式获取参数的方式也是不同的,这一片博文先用post请求的form表单格式写,下一篇博文再介绍json格式。

    /**
         * @param httpServletRequest
         * @param httpServletResponse
         * @return void
         * @Description: 验证sign签名
         * @Author Zangdy
         * @CreateTime 2019/4/22 12:57
         */
        private boolean verifySign(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws IOException {
            // 签名
            String appKey = httpServletRequest.getParameter("appKey");
            String timeStamp = httpServletRequest.getParameter("timeStamp");
            String sign = httpServletRequest.getParameter("sign");
            // 判断参数是否为空
            if (StringUtils.isBlank(appKey) || StringUtils.isBlank(timeStamp) || StringUtils.isBlank(sign)) {
                DyTool.responseWriter(StatusEnum.APPTIMESIGNISNULL, httpServletResponse);  // (工具类)
                return false;
            } else {
                StringBuilder signSb = new StringBuilder();
                // 获取url里的请求参数
                Map<String, String[]> parameterMap = httpServletRequest.getParameterMap();
                for (String paraName : parameterMap.keySet()) {
                    if (!"sign".equals(paraName)) {   // 拼接参数
                        signSb.append(paraName).append("=").append(parameterMap.get(paraName)[0]).append("&");
                    }
                }
                String signNew = signSb.substring(0, signSb.length() - 1); // 获取拼接后的参数
                String[] signArr = signNew.split("&");
                Arrays.sort(signArr);  // 将参数排序
                signNew = DyTool.arrToString(signArr);  // (工具类)数组转字符串
                signNew = signNew.replace("=", "");
                signNew += securityKeyLocal;  // 拼接securityKey
                if (!sign.equals(SecuritySHATool.shaEncrypt(signNew))) {
                    DyTool.responseWriter(StatusEnum.SIGNUNTRUE, httpServletResponse);  // (工具类)
                    return false;
                }
                long time = new Date().getTime();  // 获取当前时间毫秒值
                try {
                //DyTool.timeStampToDateTime  工具类,将yyyyMMddHHmmss转成毫秒值
                    if ((time - DyTool.timeStampToDateTime(timeStamp)) > (1000 * 60 * 5)) { // 一次请求签名在五分钟内
                        DyTool.responseWriter(StatusEnum.SIGNOUTTIME, httpServletResponse); // (工具类)
                        return false;
                    }
                } catch (ParseException e) {
                    e.printStackTrace();
                }
            }
            return true;
        } 
    
        /**
     * @param timeStamp  yyyyMMddHHmmss格式时间戳
     * @return java.lang.Long
     * @Description: 将时间戳转为毫秒值   yyyyMMddHHmmss
     * @Author Zangdy
     * @CreateTime 2019/4/22 11:42
     */
    public static Long timeStampToDateTime(String timeStamp) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
        return sdf.parse(timeStamp).getTime();
    }
    /**
     * @param statusEnum  状态枚举类
     * @param response
     * @return java.lang.String
     * @Description: 发生错误时响应给请求者, 拦截器过滤器层面,需要HttpServletResponse
     * @Author Zangdy
     * @CreateTime 2019/4/22 11:09
     */
    public static void responseWriter(StatusEnum statusEnum, HttpServletResponse response) throws IOException {
        ResponseBody responseBody = new ResponseBody();
        responseBody.setStatus(statusEnum.getStatus());
        responseBody.setMessage(statusEnum.getMessage());
        response.setContentType("text/html; charset=UTF-8");
        response.getWriter().write(JSONObject.toJSONString(responseBody));
    }
    
    /**
     * @Description:  状态枚举类
     * @Author: 臧东运
     * @CreateTime: 2019/4/22 10:53
     */
    public enum  StatusEnum {
    
        UNLOGIN("0000","未登录"),
    
        /**
         * 状态 02 开头为成功
         * */
        LOGINSUCCESS("0201","登陆成功"),
        LOGOUTSUCCESS("0202","注销成功"),
        UPLOADSUCCESS("0203","文件上传成功"),
    
    
        /**
         * 状态 04 开头为失败
         */
        IPBLOCKED("0400","因非法请求,已被禁止访问,请稍后重试!"),
        ACCESSDENIED("0401","无权限访问"),
        USERNAMEISNULL("0402","用户名不能为空!"),
        PASSWORDISNULL("0402","密码不能为空!"),
        USERNAMEERROR("0402","用户名错误!"),
        PASSWORDERROR("0402","密码错误!"),
        NOHEADER("0403","缺少头信息"),
        TOKENOUTTIME("0404","token认证已过期"),
        APPTIMESIGNISNULL("0405","sign认证参数为空"),
        SIGNUNTRUE("0406","sign参数不正确"),
        SIGNOUTTIME("0407","sign签名已过期"),
    
        ERROR("0499","服务器异常,请稍后重试。如有问题,请联系管理员"),
        CUSTOM("0500","自定义异常");
    
        private String status;
        private String message;
    
        StatusEnum(String status, String message) {
            this.status = status;
            this.message = message;
        }
    
        public String getStatus() {
            return status;
        }
    
        public void setStatus(String status) {
            this.status = status;
        }
    
        public String getMessage() {
            return message;
        }
    
        public void setMessage(String message) {
            this.message = message;
        }
    }
    
    
    /**
     * @Description:  加密算法工具类
     * @Author: 臧东运
     * @CreateTime: 2019/4/22 14:10
     */
    public class SecuritySHATool {
        public static final String KEY_SHA = "SHA";
        public static final String KEY_MD5 = "MD5";
    
    
        /**
         * MD5加密字节
         *
         * @param data
         * @return
         * @throws Exception
         */
        public static byte[] encryptMD5(byte[] data) throws Exception {
            MessageDigest md5 = MessageDigest.getInstance(KEY_MD5);
            md5.update(data);
            return md5.digest();
    
        }
    
        /**
         * SHA加密字节
         *
         * @param data
         * @return
         * @throws Exception
         */
        public static byte[] encryptSHA(byte[] data) throws Exception {
            MessageDigest sha = MessageDigest.getInstance(KEY_SHA);
            sha.update(data);
            return sha.digest();
        }
    
    
        /**
         * SHA加密
         *
         * @param inputStr
         * @return
         */
        public static String shaEncrypt(String inputStr) {
            byte[] inputData = inputStr.getBytes();
            String returnString = "";
            try {
                inputData = encryptSHA(inputData);
                for (int i = 0; i < inputData.length; i++) {
                    returnString += byteToHexString(inputData[i]);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return returnString;
        }
    
    
        private static String byteToHexString(byte ib) {
            char[] Digit = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a',
                    'b', 'c', 'd', 'e', 'f'};
            char[] ob = new char[2];
            ob[0] = Digit[(ib >>> 4) & 0X0F];
            ob[1] = Digit[ib & 0X0F];
            String s = new String(ob);
            return s;
        }
    
        /**
         * MD5加密
         *
         * @param inputStr
         * @return
         */
        public static String md5Encrypt(String inputStr) {
            byte[] inputData = inputStr.getBytes();
            String returnString = "";
            try {
                BigInteger md5 = new BigInteger(encryptMD5(inputData));
                returnString = md5.toString(16);
    
            } catch (Exception e) {
                e.printStackTrace();
            }
    
            return returnString;
        }
    
        public static String dataDecrypt(Map<String, Object> serviceParams) {
            StringBuilder sb = new StringBuilder();
            Object[] keys = serviceParams.keySet().toArray();
            Arrays.sort(keys);
            for (Object key : keys) {
                sb.append(key).append(serviceParams.get(key));
            }
            return sb.toString();
        }
    
        public static void main(String[] args) {
            System.out.println(shaEncrypt("username111password111"));
            System.out.println(md5Encrypt("111"));
        }
    

    如果发现什么问题请留言,毕竟代码都是人写的难免会出错。

    展开全文
  • openssl sign

    千次阅读 2018-07-19 15:34:04
    Step1:用openssl生成一对公钥/私钥rsa2048 ...签名openssl dgst -sign root.pem -sha256 -out sign.txt file.txt Step3:手动将公钥,私钥取出 1)提取公钥 openssl rsa -in root.pem -out pub.p...

    Step1:用openssl生成一对公钥/私钥rsa2048
    openssl genrsa -des3 -out root.pem 2048

    Step2:
    签名openssl dgst -sign root.pem -sha256 -out sign.txt file.txt 
    Step3:手动将公钥,私钥取出
    1)提取公钥
    openssl rsa -in root.pem -out pub.pem -pubout
    2 )将公共,私钥转为文格格式
    openssl rsa -in root.pem -text -out private.txt(私钥)
    openssl rsa -pubin -in pub.pem -text -out public.txt(公钥)
    3)将“:”去掉,放到amba的文件格式中
    Step4: 
    验证方法1:用test_digital_signature验证test_digital_signature签出的签名成功
    验证方法2:用test_digital_signaturefect证openssl签出的签名成功
    验证方法3:用openssl验证test_digital_signature签出的名成功
    验证方法4:openssl和test_digital_signature对同一文件签出的名相同

    展开全文
  • Sign函数

    万次阅读 2016-11-13 11:16:14
    今天在看一篇基于深度学习的超分辨率重建的文章中遇到这样一个函数sign(x),这是一个符号函数,用于把函数的符号析离出来, 在数学和计算机运算中,其功能是取某个数的符号(正或负): 当x>0,sign(x)=1; ...
  • SIGN函数

    千次阅读 2018-10-19 10:06:20
     给定实数x,输出sign(x)的值。sign(x)是符号函数,如果x&gt;0,则返回1;如果x=0,则返回0;如果x&lt;0,则返回-1。 输入格式  一行一个实数x。 输出格式  一行一个整数表示答案。 样例输入 -0....
  • sign in和sign up区别

    千次阅读 2016-02-03 21:40:00
    如果是网站的话sign up是注册,sign in是登录的意思,另外,sign out退出 转载于:https://www.cnblogs.com/zhaoshunjie/p/5180563.html
  • PAT甲级 1006 Sign In and Sign Out

    千次阅读 2020-01-30 20:20:33
    PAT甲级 1006 Sign In and Sign Out At the beginning of every day, the first person who signs in the computer room will unlock the door, and the last one who signs out will lock the door. Given the ...
  • github上的sign in;sign up

    千次阅读 2016-11-10 10:24:55
    sign in 登录 sign up注册
  • sign签名是用于提供给外部(第三方)调用的接口,调用方需要提供正确的appkey钥匙才能调用,确保了接口的安全性。签名参数sign生成方法:假设有请求参数如下:appkey = "111222333"body = {"username": "Test",...
  • Sign in Log in Sign up Register 宣匠来给你划重点了 !!!敲黑板 诶?你怎么不拿本记呢? 解释来源点这里 both login and sign in are the same as authenticate verb, to validate the user. Otherwise ...
  • 1006. Sign In and Sign Out

    2015-10-09 21:24:09
    Sign In and Sign Out //字符串的比较:string a,b;可以直接比较大小,不需要写重载函数, #include #include using namespace std; int main() { int M; string ID_number, Sign_in_time, Sign_out_time; ...
  • Sign In With Apple

    千次阅读 2020-03-13 11:58:24
    在最新的审核指南中,出现了关于Sign In With Apple 的要求: 4.8 Sign in with Apple Apps that use a third-party or social login service (such as Facebook Login, Google Sign-In, Sign in with Twitter, ...
  • sign check fail: check Sign and Data Fail

    千次阅读 2019-01-17 12:02:31
    支付宝开发报错:com.alipay.api.AlipayApiException: sign check fail: check Sign and Data Fail 解决方法: 确认使用的支付宝公钥是否正确,不同的环境使用的支付宝公钥不同, 如沙箱环境、线上openapi网关和...
  • 1006. Sign In and Sign Out (25) At the beginning of every day, the first person who signs in the computer room will unlock the door, and the last one who signs out will lock the door. Given the recor...
  • codesign

    2015-03-24 22:46:51
    codesign --display --entitlements - /Applications/Preview.app
  • 前端生成sign签名

    千次阅读 2019-04-28 14:01:36
    接着上一篇博文写写前端如何生成sign签名,此处生成的签名和前两篇的(sign签名)中验证是一致的,可以对比使用。使用方式在上一篇(vue中post请求使用form表单格式发送数据)中使用过,可参考 function getSign...
  • UVa 1510 Neon Sign

    千次阅读 2020-02-15 10:51:41
    UVa 1510 Neon Sign JungHeum recently opened a restaurant called ‘Triangle’ and has ordered the following neon sign for his restaurant. The neon sign has N corners positioned on the circumference of ...
  • sign 函数

    千次阅读 2012-09-09 11:04:17
    sign 函数 Signum function 符号函数 Syntax 语法 Y = sign(X) Description 描述 Y = sign(X) returns an array Y the same size as X, where each element of Y is: Y=sign(X)返回一...
  • Fortran : sign

    2018-11-20 15:15:11
    program main implicit none if (-0.0 == 0.0) write(*,*) "for other manipulations they are indentical " ...if (sign(2.0, -0.0) &lt; sign(2.0, 0.0)) write (*,*)"for...
  • 问题描述:给定一些车子的入站出站的.../*1006 Sign In and Sign Out (25 分) *只需保留最早和最晚的车子信息,并动态更新,每输入一个就进行比较, */ #include&lt;iostream&gt; #include&lt;cstri...
  • [sign] => BB76D04E3DCAD9CE70257E3ACC9151D2 ) 返回的数据如下: array ( 'appid' => 'wx76f7cd2ec7b8ab2d', 'attach' => 'test', 'bank_type' => 'CFT', 'cash_fee' => '1', 'fee_type' => 'CNY', 'is_...
  • 我们先看一下类似的错误信息如下:com.alipay.api.AlipayApiException: sign check fail: check Sign and Data Fail这里着重说明,报这个错误是因为支付宝公钥(alipay_public_key)使用错误导致的!很多开发者把...
  • 淘宝h5端sign

    2020-11-24 18:57:34
    因业务需求需破解淘宝sign值,过程如下 在控制台搜索sign值: 找到后打断点如下: 进一步调试得知计算公式为: md5Hex(token&t&appKey&data) 其中,token为 cookie里的 _m_h5_tk 下划线前面部分, ...
  • 常用sign算法

    千次阅读 2019-05-19 10:57:00
    所有参数包括appkey或者token拼接成&key=value格式 转小写 正序排序 MD5后得到sign 转载于:https://www.cnblogs.com/hankleo/p/10888475.html
  • 1006 Sign In and Sign Out (25分) At the beginning of every day, the first person who signs in the computer room will unlock the door, and the last one who signs out will lock the door. Given the ...
  • 生成加密sign

    千次阅读 2016-12-01 10:44:12
    接口请求时,生成sign/** * 生成sign * @param params * @return */ public static String sign(MultiValueMap, String> params){ List<String> paramsStr = new ArrayList();
  • matlab中sign函数用法

    万次阅读 2018-09-11 19:13:24
    sign本身就有就有符号标志之意.故sign为符号函数! sign(整数)=1; sign(负数)=-1; sign(零)=0; matlab运行例子:

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 79,956
精华内容 31,982
关键字:

sign