• 关于

    jce

    的搜索结果

问题

官方java demo可能有问题

不代表以后,就是到今天。就是套件在注册时,进行解密文本时,异常提示说是解密错误。有几个朋友都遇到。具体的解决方案是 1、到以下网址:http://www.oracle.com/tec...
dqk1985 2019-12-01 21:21:17 4300 浏览量 回答数 1

回答

你这个是jdk导致的,jdk里面有一个jce的包,安全性机制导致的访问https会报错,官网上有替代的jar包,换掉就好了 引用来自“刘正阳”的评论 你这个是jdk导致的,jdk里面有一个jce的包,安全性机制导致的访问https会报错,官网上有替代的jar包,换掉就好了 引用来自“刘正阳”的评论 你这个是jdk导致的,jdk里面有一个jce的包,安全性机制导致的访问https会报错,官网上有替代的jar包,换掉就好了不替换的话,服务器能够成功登陆跳转,用cas客户端登陆就显示这个错误。替换之后,显示ssl连接失败。楼主解决了吗?这个问题我后来通过把JDK1.6升级成1.7解决了,但是如果你有更好的解决方案请告诉我,谢谢我是在用jpush推送出现这个问题的,jdk1.8.本地测试没有问题,到Linux上就报这个错、、什么情况回复 @郑好萌:也是1.8你linux上面的JDK是什么版本参看http://my.oschina.net/zhyh1105/blog/679799 引用来自“刘正阳”的评论 你这个是jdk导致的,jdk里面有一个jce的包,安全性机制导致的访问https会报错,官网上有替代的jar包,换掉就好了 apache-tomcat-6.0.45 jdk1.6.0_45 我按照 http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html这个例子找到jdk6的版本,替换了那两个jar包还是包这个问题,怎么解决。 在tomcat增加参数没效果怎么办回事?在tomcat的启动参数里加上-Dhttps.protocols=SSLv3,TLSv1就可以了 原来用的jdk8也有这个问题后来换成了jdk7问题解决JDK8确实有这个问题但是还不得不用JDK8用到了新特性你解决了吗? 用的jdk8替换jar包后还是没有解决,有什么发方法吗?
爱吃鱼的程序员 2020-06-12 14:24:42 0 浏览量 回答数 0

回答

我觉得很有可能你的parent中配置有问题,java的谢谢,问题找到了,有同事使用sun私有类,并且配置了${java.home}\lib\rt.jar;${java.home}\lib\jce.jar导致的。jekins你们主要用来干嘛可以自动编译打包测试发布我建议你先别用jenkins本地maven我估计你也编译不过去本地可以正常编译,配置文件中有${java.home}\lib\rt.jar;${java.home}\lib\jce.jar把分号换成冒号也不行,目前只能临时注释掉,才正常了。
爱吃鱼的程序员 2020-06-08 15:32:32 0 浏览量 回答数 0

问题

新建 sample 项目报错

sign error: 1 Exception in thread "main" java.lang.NoClassDefFoundError: org/bouncycastle/jce/provider/BouncyCas...
可口可乐152 2019-12-01 21:03:59 1214 浏览量 回答数 1

回答

Re通知报文加解密失败 试试替换一下JCE无限制加密解密
easzz 2019-12-02 01:27:50 0 浏览量 回答数 0

问题

Java sslsocket程序报错javax.net.ssl.SSLHands?400报错

在网上学习的Android做客户端,java做服务器的sslsocket交互,在模拟器上运行没有错误,在真机上运行服务端会报错! 生成秘钥库之类的语句 1) 生成服务...
爱吃鱼的程序员 2020-06-07 16:35:23 0 浏览量 回答数 1

回答

jdk版本问题吧回复 @三十回头:记得有一次用了myeclipse自带的jdk就出现过类似的错误能具体点吗maven先install一下试试。我也经常出现这种问题,install一下就好了在pom.xml文件中没有找到jce.jar的相关引用
爱吃鱼的程序员 2020-06-14 15:47:10 0 浏览量 回答数 0

回答

Re套件推送白名单问题 你开发的机子所在的公网IP也要填进白名单里 ------------------------- 回 3楼semoon的帖子 JCE无限制权限策略文件 有替换过吗? ------------------------- Re套件推送白名单问题 计算解密文字错误 我之前也遇到过 替换jre后就OK了  但是现在签名老错
ryomasaber 2019-12-02 01:02:50 0 浏览量 回答数 0

问题

jdk1.6访问https接口报错,jdk1.7访问正常,服务端jdk为1.7 ?报错

jdk1.6访问https接口报错,jdk1.7访问正常,服务端jdk为1.7报错,对比正常访问密码套件不一样,可是我下载jce之后也没有用正常使用的是TLS,1.6使用...
爱吃鱼的程序员 2020-06-23 01:26:52 0 浏览量 回答数 1

回答

回 3楼(dovewoking) 的帖子 http://open.dingtalk.com/doc/#加解密库和demo下载 你看一下这个,需要做一下准备工作,要导入相应jar包,以及可能要更换JCE无限制权限策略文件 ------------------------- 回 1楼(threettiger) 的帖子 创建套件的回调事件不是返回success,你看一下最新的demo,和文档描述
君信 2019-12-02 00:14:01 0 浏览量 回答数 0

问题

编译error编译PACKAGEcom.yunos.toolkit.UBusSend.zip

大家好, 因为使用的PC环境为ubuntu 18.0LTS, 所有在编译过程中遇到些问题希望能够得到大家的帮助,在此感谢了。 然后我目前编译的是1.0.0-r1, 可以在NUC平台上使用的版本。 ...
tzhai 2019-12-01 21:29:33 1192 浏览量 回答数 0

问题

签名计算失败

动作:模拟测试企业发起授权所有套件 结果:签名计算失败 说明:          1.更新套件信息签名正常、suit_ticket推送时的签名也正常,          2.JCE无限...
ryomasaber 2019-12-01 21:58:56 5942 浏览量 回答数 4

回答

参考下面代码: try {     KeyPairGenerator keyPairGen = KeyPairGenerator.getInstance("RSA",             new org.bouncycastle.jce.provider.BouncyCastleProvider());     final int KEY_SIZE = 128;// 没什么好说的了,这个值关系到块加密的大小,可以更改,但是不要太大,否则效率会低     keyPairGen.initialize(KEY_SIZE, new SecureRandom());     KeyPair keyPair = keyPairGen.generateKeyPair();     return keyPair; } catch (Exception e) {     throw new Exception(e.getMessage()); }
云篆 2019-12-02 01:26:44 0 浏览量 回答数 0

问题

maven打包报错,用命令打包的mvn package 接着报这个错,急等 ?报错

jdk用的1.8 pom.xml配置maven之后 <build> <plugins> <plugin> <groupId>org.apach...
爱吃鱼的程序员 2020-06-23 14:03:49 0 浏览量 回答数 1

问题

【漏洞公告】Oracle发布多个Java漏洞更新-2017年7月

2017年7月18日,Oracle官方发布了2017年7月份的安全公告, 安全公告中报告了多个漏洞, 远程用户可以访问和修改目标系统上的数据,或可以在目标系统上获得提升的权限ÿ...
正禾 2019-12-01 20:56:23 17901 浏览量 回答数 2

问题

AES java ios 互解问题:报错

@Sun1009 你好,想跟你请教个问题: 看了你关于AES java和ios的文章。按照这个方式不得行啊!java端自己可以加密解密,ios端也是。但是ios和java...
kun坤 2020-06-14 14:16:09 0 浏览量 回答数 0

回答

那位大神,如果知道的话,求指点配置文件中有CertId?总之是检查为什么会产生空指针异常,而不能访问到文件只是可能的原因之一。回复 @zigzagroad:很怪,路径我也检查了,我是复制的路径,检查了很多遍,确认没得问题回复 @zigzagroad:ps-ef|greptomcatroot126191012:51?00:00:29/usr/java/jdk/jre/bin/java应该是root帐户回复 @zigzagroad:ps-ef|greptomcatroot126191012:51?00:00:29/usr/java/jdk/jre/bin/java如果是以root用户启动Tomcat,应该不存在用户权限问题,此时就需要注意路径是否正确,包括大小写。 权限不够?没有读取文件的权限?我的证书权限是777,上级目录权限也是777  这个文件以及所有路径的权限都是777,不知道为什么读不到   /web/zip/certs/unionpayweb.pfx 这个文件以及所有路径的权限都是777,不知道为什么读不到 不像是文件读不到的错误提示long太长两个wran被遮挡住了。看不见。你这个问题还是看下文档,联系下接口人,这个访问对方接口应该有ip限制。  Enumeration<String>aliasenum=keyStore.aliases(); 通过打印发现,是这个报错了,所以没得到CertId 有知道这个是怎么处理的吗,银联的  找到原因了,我还是说下,共享出来,以后有朋友遇到类似问题,可以参考 这个问题是jdk的原因,不是程序的原因,我在咨询了银联的技术客服后,给出了以下的解决方案 1、修改以下两个文件 %JRE_Home%\jre\lib\security\java.security追加最后一行security.provider.1=sun.security.provider.Sunsecurity.provider.2=sun.security.rsa.SunRsaSignsecurity.provider.3=sun.security.ec.SunECsecurity.provider.4=com.sun.net.ssl.internal.ssl.Providersecurity.provider.5=com.sun.crypto.provider.SunJCEsecurity.provider.6=sun.security.jgss.SunProvidersecurity.provider.7=com.sun.security.sasl.Providersecurity.provider.8=org.jcp.xml.dsig.internal.dom.XMLDSigRIsecurity.provider.9=sun.security.smartcardio.SunPCSCsecurity.provider.10=sun.security.mscapi.SunMSCAPIsecurity.provider.11=org.bouncycastle.jce.provider.BouncyCastleProvider 2、将bcprov-ext-jdk16-143.jar放到   %JDK_Home%\jre\lib\ext 修改过后,重启,立马解决,困扰了两个星期的问题终于解决了 同时感谢之前积极回答我的朋友@ zigzagroad @ waitliu 感谢您们
爱吃鱼的程序员 2020-06-08 16:57:35 0 浏览量 回答数 0

问题

ClassCastException异常 400 请求出错

我在使用JedisCluster的实例,调用它的方法getClusterNodes()然后给一个JedisPool赋值的时候,提示我一个ClassCastException,具体的栈信息如下: java.lang.ClassCa...
黄一刀 2020-05-26 20:30:58 11 浏览量 回答数 1

问题

ClassCastException异常? 400 报错

ClassCastException异常? 400 报错 我在使用JedisCluster的实例,调用它的方法getClusterNodes()然后给一个JedisPool赋值的时候,提示我一个ClassCastException,具体...
爱吃鱼的程序员 2020-06-02 14:04:46 0 浏览量 回答数 1

问题

ClassCastException异常? 400 报错

ClassCastException异常? 400 报错 我在使用JedisCluster的实例,调用它的方法getClusterNodes()然后给一个JedisPool赋值的时候,提示我一个ClassCastException,具体...
爱吃鱼的程序员 2020-06-22 23:02:46 0 浏览量 回答数 1

问题

weblogic12.2在myeclipse中启动报错?报错

<2018-2-23 上午10时42分15秒 CST> <Info> <Security> <BEA-090905> <Disabling the CryptoJ JCE Provide...
爱吃鱼的程序员 2020-06-07 18:09:03 0 浏览量 回答数 1

问题

eclipse中的maven web项目war包部署到tomcat问题 : 配置报错 

为什么通过eclipse的export导出的war可以复制到tomcat下直接部署,但是通过maven的instal打包的war部署到tomcat后却访问不到??? pom.xml配置...
kun坤 2020-06-03 16:36:37 4 浏览量 回答数 1

问题

为什么javac编译器找不到javafx.collections,但是我正在使用它?

这是我代码的相关部分 package ReadWriteDisplayTriangles; import javafx.scene.layout.Pane; import javafx.scene.paint.Color; import...
montos 2020-03-27 17:06:30 3 浏览量 回答数 2

回答

ReISV接入钉钉详细示例以及代码JAVA版本服务窗代码部分放出 创建套件时候报错!!!!!!! com.dingtalk.oapi.lib.aes.DingTalkEncryptException: 计算解密文字错误     at com.dingtalk.oapi.lib.aes.DingTalkEncryptor.decrypt(DingTalkEncryptor.java:149)     at com.dingtalk.oapi.lib.aes.DingTalkEncryptor.getDecryptMsg(DingTalkEncryptor.java:94)     at com.dingtalk.isv.access.web.controller.suite.callback.SuiteCallBackController.suiteCreate(SuiteCallBackController.java:83)     at com.dingtalk.isv.access.web.controller.suite.callback.SuiteCallBackController$$FastClassBySpringCGLIB$$8ac1ce8d.invoke(<generated>)     at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)     at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:700)     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)     at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:80)     at com.dingtalk.isv.access.web.interceptor.ControllorAOP.handler(ControllorAOP.java:46)     at sun.reflect.GeneratedMethodAccessor80.invoke(Unknown Source)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     at java.lang.reflect.Method.invoke(Method.java:498)     at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:621)     at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:610)     at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:65)     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)     at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:91)     at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)     at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:633)     at com.dingtalk.isv.access.web.controller.suite.callback.SuiteCallBackController$$EnhancerBySpringCGLIB$$be104419.suiteCreate(<generated>)     at sun.reflect.GeneratedMethodAccessor79.invoke(Unknown Source)     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)     at java.lang.reflect.Method.invoke(Method.java:498)     at org.springframework.web.method.support.InvocableHandlerMethod.invoke(InvocableHandlerMethod.java:215)     at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:132)     at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:104)     at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandleMethod(RequestMappingHandlerAdapter.java:745)     at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:686)     at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:80)     at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:925)     at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:856)     at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:953)     at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:855)     at javax.servlet.http.HttpServlet.service(HttpServlet.java:661)     at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:829)     at javax.servlet.http.HttpServlet.service(HttpServlet.java:742)     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231)     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)     at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:53)     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)     at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:88)     at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107)     at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193)     at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166)     at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199)     at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96)     at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:475)     at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140)     at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:80)     at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:624)     at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87)     at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342)     at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:498)     at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)     at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:796)     at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1366)     at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)     at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)     at java.lang.Thread.run(Thread.java:748) 本人做了jce [font="]无限制权限策略文件,但还报次错,不知道为什么?急等人解决 参照了g.alicdn.com/dingding/opendoc/docs/_isvguide/tab5.html?t=1464078310753#加解密库和demo下载 也不行。。。。。 有没有人解答啊!!!!
ehr_test 2019-12-02 02:03:46 0 浏览量 回答数 0

问题

java SSL连接异常 Remote host closed connectionduring报错

" 背景 目前项目需要,利用java模拟登录一个https的网站 jdk 1.8httpClient 4.5.2 报错信息如下: main, received EOFException: err...
因为相信,所以看见。 2020-05-25 15:57:45 13 浏览量 回答数 1

回答

<p>//这是调用的测试程序:</p> public static void test(){         //加密内容         String source = "加密加密加12abc";         //加密密钥         String key = "chiscdc_fsws_@%^";         String encrypt = EncryptUtil.encryptByKey(source,key);         System.out.println("加密后:"+encrypt);         String decrypt = EncryptUtil.decryptByKey(encrypt,key);         System.out.println("解密后:"+decrypt);     }      //这是 EncryptUtil : import java.io.UnsupportedEncodingException; import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import javax.xml.transform.Source; public class EncryptUtil {    /**     * 密钥算法     */    private static final String ALGORITHM = "DES";    /**     * 加解密算法/工作模式/填充方式     */    private static final String ALGORITHM_STR = "DES/ECB/NoPadding";    private static final String CHARSET = "UTF-8";        /**     * 填充内容     */    private static final String PAD_STR = "\0";    /**     * <p>方法描述:根据自己的密钥实现des加密</p>     *     * @MethodAuthor yzd, 2018/7/23,encryptByKey     *     */     public static String encryptByKey(String souce, String key) {         try {             return encryptByDes(pkcs5Pad(souce), pkcs5Pad(key));         } catch (Exception e) {             e.printStackTrace();             return null;         }     }    /**     * <p>方法描述:根据密钥解密</p>     *     * @MethodAuthor yzd, 2018/7/23,decryptByKey     *     */     public static String decryptByKey(String souceString,String key) {         try {             byte [] source = hexStringToBytes(souceString);             return decryptByDes(source, pkcs5Pad(key)).trim();         } catch (Exception e) {             e.printStackTrace();             return null;         }     }     /**      * <p>方法描述:正式加密操作</p>      *      * @MethodAuthor yzd, 2018/7/23,decryptByKey      *      */    private static String encryptByDes( byte[] souce, byte[] bs)          throws Exception {       // DES算法要求有一个可信任的随机数源       SecureRandom sr = new SecureRandom();       // 从原始密匙数据创建DESKeySpec对象       DESKeySpec dks = new DESKeySpec(bs);       // 创建一个密匙工厂,然后用它把DESKeySpec转换成 一个SecretKey对象       SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(ALGORITHM);       SecretKey key1 = keyFactory.generateSecret(dks);       // Cipher对象实际完成加密操作       Cipher cipher = Cipher.getInstance(ALGORITHM_STR);       // 用密匙初始化Cipher对象       cipher.init(Cipher.ENCRYPT_MODE, key1, sr);       // 现在,获取数据并加密       byte encryptedData[] = cipher.doFinal(souce);       return byteArr2HexStr(encryptedData);    }    public static String byteArr2HexStr(byte[] arrB) {       int iLen = arrB.length;       // 每个byte用两个字符才能表示,所以字符串的长度是数组长度的两倍       StringBuffer sb = new StringBuffer(iLen * 2);       for (int i = 0; i < iLen; i++) {          int intTmp = arrB[i];          // 把负数转换为正数          while (intTmp < 0) {             intTmp = intTmp + 256;          }          // 小于0F的数需要在前面补0          if (intTmp < 16) {             sb.append("0");          }          sb.append(Integer.toString(intTmp, 16));       }       return sb.toString();    }    public static byte[] hexStringToBytes(String hexString) {         if (hexString == null) {             return null;         }        if (hexString.length() <= 0){            return new byte[0];        }         hexString = hexString.toUpperCase();         int length = hexString.length() / 2;         char[] hexChars = hexString.toCharArray();         byte[] result = new byte[length];         for (int i = 0; i < length; i++) {             int step = i * 2;             result[i] = (byte) (charToByte(hexChars[step]) << 4 | charToByte(hexChars[step + 1]));         }         return result;     }    private static final String HEX_STRING_MAPPING = "0123456789ABCDEF";    private static byte charToByte(char c) {         return (byte) HEX_STRING_MAPPING.indexOf(c);     }        private static String decryptByDes(byte[] souce, byte[] bs)          throws Exception {       // DES算法要求有一个可信任的随机数源       SecureRandom sr = new SecureRandom();       // 从原始密匙数据创建DESKeySpec对象       DESKeySpec dks = new DESKeySpec(bs);       // 创建一个密匙工厂,然后用它把DESKeySpec转换成 一个SecretKey对象       SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(ALGORITHM);       SecretKey key1 = keyFactory.generateSecret(dks);       // Cipher对象实际完成加密操作       Cipher cipher = Cipher.getInstance(ALGORITHM_STR);       // 用密匙初始化Cipher对象       cipher.init(Cipher.DECRYPT_MODE, key1, sr);       // 将加密报文用BASE64算法转化为字节数组       byte[] encryptedData =souce;       // 用DES算法解密报文       byte decryptedData[] = cipher.doFinal(encryptedData);       return new String(decryptedData, CHARSET);    }    public static byte[] hexStr2ByteArr(byte[] byIn) throws Exception {       byte[] arrB = byIn;       int iLen = arrB.length;       // 两个字符表示一个字节,所以字节数组长度是字符串长度除以2       byte[] arrOut = new byte[iLen / 2];       for (int i = 0; i < iLen; i = i + 2) {          String strTmp = new String(arrB, i, 2);          arrOut[i / 2] = (byte) Integer.parseInt(strTmp, 16);       }       return arrOut;    }    /**     * <p>方法描述:不足8的倍数,后面追加空格</p>     *     * @MethodAuthor yzd, 2018/7/27,pkcs5Pad     *     */    private static byte[] pkcs5Pad(final String inSouce) {         byte[] bySource = new byte[0];         try {             bySource = inSouce.getBytes(CHARSET);             // 密文和密钥的长度必须是8的倍数             if (0 == bySource.length % 8) {                 return bySource;             }         } catch (UnsupportedEncodingException e) {             // TODO Auto-generated catch block             e.printStackTrace();         }         int length = bySource.length;         int nPaddedLength = (length / 8 + 1) * 8;         byte[] byReturn = new byte[nPaddedLength];         System.arraycopy(bySource, 0, byReturn, 0, length);         int i = length;         while (i < nPaddedLength) {             byReturn[i] = (byte) (nPaddedLength - length);             i++;         }         return byReturn;     } }   原因在于: 输入的原文必须是BYTE数据,汉字的话,使用UTF-8获取其BYTE值。 DES加密时,是需要按分组长度为8字节补齐的。   大神 小弟不才 请问 result[i] = (byte) (charToByte(hexChars[step]) << 4 | charToByte(hexChars[step + 1])); 这段是做什么的? 卧槽 可以的 大神大神 膜拜一下 谢了~ <p>UTF-8</p> <p>另外, 原代码中的pkcs5Pad的补码方式是不对的。 请参考 https://blog.csdn.net/stewart/article/details/52462273</p> <p>不用楼上说的那么麻烦直接将这行代码</p> private static final String ALGORITHM_STR = "DES/ECB/NoPadding" 改为 public static final String CIPHER_ALGORITHM = "DES/ECB/PKCS5Padding "; 即可 错误原因: DES、AES 或者 3DES 属于块加密算法,一般来说原文必须是 8 的整数倍,所以块加密算法除子加密模式之外,还涉及到一个填充模式。 如果一定要用 NoPadding 的话,那么必须保证原文字节是 8 的倍数,否则的话需要使用其他的填充模式。 在 Sun JCE 中默认的填充模式除了 NoPadding 之外,还有: PKCS5Padding 和 ISO10126Padding PKCS5Padding 的填充规则是: 填充至符合块大小的整数倍,填充值为填充数量数。例如: 原始:FF FF FF FF FF FF FF FF FF 填充:FF FF FF FF FF FF FF FF FF 07 07 07 07 07 07 07 ISO10126Padding 的填充规则是: 填充至符合块大小的整数倍,填充值最后一个字节为填充的数量数,其他字节随机处理。例如: 原始:FF FF FF FF FF FF FF FF FF 填充:FF FF FF FF FF FF FF FF FF 3F 7A B4 09 14 36 07 使用填充模式后原文字节并不需要是 8 的整数倍,采用填充模式之后,块加密的密文长度为: (N / 8 * 8) + 8 如上,假如原文长度为 15 个字节,密文长度就是 16 个字节。假如原文长度为 16 个字节,密文长度就为 24 个字节。也就是说,采用填充模式后必须进行填充,哪怕是 8 的整数倍。 厉害了 都是大神啊 <div class='ref'><h4>引用来自“melon_jj”的评论</h4><p>不用楼上说的那么麻烦直接将这行代码</p> private static final String ALGORITHM_STR = "DES/ECB/NoPadding" 改为 public static final String CIPHER_ALGORITHM = "DES/ECB/PKCS5Padding "; 即可 错误原因: DES、AES 或者 3DES 属于块加密算法,一般来说原文必须是 8 的整数倍,所以块加密算法除子加密模式之外,还涉及到一个填充模式。 如果一定要用 NoPadding 的话,那么必须保证原文字节是 8 的倍数,否则的话需要使用其他的填充模式。 在 Sun JCE 中默认的填充模式除了 NoPadding 之外,还有: PKCS5Padding 和 ISO10126Padding PKCS5Padding 的填充规则是: 填充至符合块大小的整数倍,填充值为填充数量数。例如: 原始:FF FF FF FF FF FF FF FF FF 填充:FF FF FF FF FF FF FF FF FF 07 07 07 07 07 07 07 ISO10126Padding 的填充规则是: 填充至符合块大小的整数倍,填充值最后一个字节为填充的数量数,其他字节随机处理。例如: 原始:FF FF FF FF FF FF FF FF FF 填充:FF FF FF FF FF FF FF FF FF 3F 7A B4 09 14 36 07 使用填充模式后原文字节并不需要是 8 的整数倍,采用填充模式之后,块加密的密文长度为: (N / 8 * 8) + 8 如上,假如原文长度为 15 个字节,密文长度就是 16 个字节。假如原文长度为 16 个字节,密文长度就为 24 个字节。也就是说,采用填充模式后必须进行填充,哪怕是 8 的整数倍。 回复 <a class="referer" target="_blank">@Jordan裔</a> : 需要交流学习的话可以加群826183079 回复 <a class="referer" target="_blank">@Jordan裔</a> : 好吧 实在不好意思 我也想给你采纳 可是在你回答之前 我已经给楼上的哥们采纳过了 不能重复采纳了
爱吃鱼的程序员 2020-06-08 11:21:39 0 浏览量 回答数 0

回答

Spring Cloud 学习笔记(一)——入门、特征、配置 0 放在前面 0.1 参考文档 http://cloud.spring.io/spring-cloud-static/Brixton.SR7/ https://springcloud.cc/ http://projects.spring.io/spring-cloud/ 0.2 maven配置 org.springframework.boot spring-boot-starter-parent 1.5.2.RELEASE org.springframework.cloud spring-cloud-dependencies Dalston.RELEASE pom import org.springframework.cloud spring-cloud-starter-config org.springframework.cloud spring-cloud-starter-eureka 0.3 简介 Spring Cloud为开发人员提供了快速构建分布式系统中的一些通用模式(例如配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,领导选举,分布式 会话,群集状态)。 分布式系统的协调引出样板模式(boiler plate patterns),并且使用Spring Cloud开发人员可以快速地实现这些模式来启动服务和应用程序。 它们可以在任何分布式环境中正常工作,包括开发人员自己的笔记本电脑,裸机数据中心和受管平台,如Cloud Foundry。 Version: Brixton.SR7 1 特征 Spring Cloud专注于为经典用例和扩展机制提供良好的开箱即用 分布式/版本配置 服务注册与发现 路由选择 服务调用 负载均衡 熔断机制 全局锁 领导人选举和集群状态 分布式消息 2 原生云应用程序 原生云是应用程序开发的一种风格,鼓励在持续交付和价值驱动领域的最佳实践。 Spring Cloud的很多特性是基于Spring Boot的。更多的是由两个库实现:Spring Cloud Context and Spring Cloud Commons。 2.1 Spring Cloud Context: 应用上下文服务 Spring Boot关于使用Spring构建应用有硬性规定:通用的配置文件在固定的位置,通用管理终端,监控任务。建立在这个基础上,Spring Cloud增加了一些额外的特性。 2.1.1 引导应用程序上下文 Spring Cloud会创建一个“bootstrap”的上下文,这是主应用程序的父上下文。对应的配置文件拥有最高优先级,并且,默认不能被本地配置文件覆盖。对应的文件名bootstrap.yml或bootstrap.properties。 可通过设置spring.cloud.bootstrap.enabled=false来禁止bootstrap进程。 2.1.2 应用上下文层级结构 当用SpringApplication或SpringApplicationBuilder创建应用程序上下文时,bootstrap上下文将作为父上下文被添加进去,子上下文将继承父上下文的属性。 子上下文的配置信息可覆盖父上下文的配置信息。 2.1.3 修改Bootstrap配置文件位置 spring.cloud.bootstrap.name(默认是bootstrap),或者spring.cloud.bootstrap.location(默认是空) 2.1.4 覆盖远程配置文件的值 spring.cloud.config.allowOverride=true spring.cloud.config.overrideNone=true spring.cloud.config.overrideSystemProperties=false 2.1.5 定制Bootstrap配置 在/META-INF/spring.factories的key为org.springframework.cloud.bootstrap.BootstrapConfiguration,定义了Bootstrap启动的组件。 在主应用程序启动之前,一开始Bootstrap上下文创建在spring.factories文件中的组件,然后是@Beans类型的bean。 2.1.6 定制Bootstrap属性来源 关键点:spring.factories、PropertySourceLocator 2.1.7 环境改变 应用程序可通过EnvironmentChangedEvent监听应用程序并做出响应。 2.1.8 Refresh Scope Spring的bean被@RefreshScope将做特殊处理,可用于刷新bean的配置信息。 注意 需要添加依赖“org.springframework.boot.spring-boot-starter-actuator” 目前我只在@Controller测试成功 需要自己发送POST请求/refresh 修改配置文件即可 2.1.9 加密和解密 Spring Cloud可对配置文件的值进行加密。 如果有"Illegal key size"异常,那么需要安装JCE。 2.1.10 服务点 除了Spring Boot提供的服务点,Spring Cloud也提供了一些服务点用于管理,注意都是POST请求 /env:更新Environment、重新绑定@ConfigurationProperties跟日志级别 /refresh重新加载配置文件,刷新标记@RefreshScope的bean /restart重启应用,默认不可用 生命周期方法:/pause、/resume 2.2 Spring Cloud Commons:通用抽象 服务发现、负载均衡、熔断机制这种模式为Spring Cloud客户端提供了一个通用的抽象层。 2.2.1 RestTemplate作为负载均衡客户端 通过@Bean跟@LoadBalanced指定RestTemplate。注意URI需要使用虚拟域名(如服务名,不能用域名)。 如下: @Configuration public class MyConfiguration { @LoadBalanced @Bean RestTemplate restTemplate() { return new RestTemplate(); } } public class MyClass { @Autowired private RestTemplate restTemplate; public String doOtherStuff() { String results = restTemplate.getForObject(" http://stores/stores", String.class); return results; } } 2.2.2 多个RestTemplate对象 注意@Primary注解的使用。 @Configuration public class MyConfiguration { @LoadBalanced @Bean RestTemplate loadBalanced() { return new RestTemplate(); } @Primary @Bean RestTemplate restTemplate() { return new RestTemplate(); } } public class MyClass { @Autowired private RestTemplate restTemplate; @Autowired @LoadBalanced private RestTemplate loadBalanced; public String doOtherStuff() { return loadBalanced.getForObject(" http://stores/stores", String.class); } public String doStuff() { return restTemplate.getForObject(" http://example.com", String.class); } } 2.2.3 忽略网络接口 忽略确定名字的服务发现注册,支持正则表达式配置。 3 Spring Cloud Config Spring Cloud Config提供服务端和客户端在分布式系统中扩展配置。支持不同环境的配置(开发、测试、生产)。使用Git做默认配置后端,可支持配置环境打版本标签。 3.1 快速开始 可通过IDE运行或maven运行。 默认加载property资源的策略是克隆一个git仓库(at spring.cloud.config.server.git.uri')。 HTTP服务资源的构成: /{application}/{profile}[/{label}] /{application}-{profile}.yml /{label}/{application}-{profile}.yml /{application}-{profile}.properties /{label}/{application}-{profile}.properties application是SpringApplication的spring.config.name,(一般来说'application'是一个常规的Spring Boot应用),profile是一个active的profile(或者逗号分隔的属性列表),label是一个可选的git标签(默认为"master")。 3.1.1 客户端示例 创建以Spring Boot应用即可,添加依赖“org.springframework.cloud:spring-cloud-starter-config”。 配置application.properties,注意URL为配置服务端的地址 spring.cloud.config.uri: http://myconfigserver.com 3.2 Spring Cloud Config 服务端 针对系统外的配置项(如name-value对或相同功能的YAML内容),该服务器提供了基于资源的HTTP接口。使用@EnableConfigServer注解,该服务器可以很容易的被嵌入到Spring Boot 系统中。使用该注解之后该应用系统就是一个配置服务器。 @SpringBootApplication @EnableConfigServer public class ConfigApplicion { public static void main(String[] args) throws Exception { SpringApplication.run(ConfigApplicion.class, args); } } 3.2.1 资源库环境 {application} 对应客户端的"spring.application.name"属性 {profile} 对应客户端的 "spring.profiles.active"属性(逗号分隔的列表) {label} 对应服务端属性,这个属性能标示一组配置文件的版本 如果配置库是基于文件的,服务器将从application.yml和foo.yml中创建一个Environment对象。高优先级的配置优先转成Environment对象中的PropertySource。 3.2.1.1 Git后端 默认的EnvironmentRepository是用Git后端进行实现的,Git后端对于管理升级和物理环境是很方便的,对审计配置变更也很方便。也可以file:前缀从本地配置库中读取数据。 这个配置库的实现通过映射HTTP资源的{label}参数作为git label(提交id,分支名称或tag)。如果git分支或tag的名称包含一个斜杠 ("/"),此时HTTP URL中的label需要使用特殊字符串"(_)"来替代(为了避免与其他URL路径相互混淆)。如果使用了命令行客户端如 curl,请谨慎处理URL中的括号(例如:在shell下请使用引号''来转义它们)。 Git URI占位符 Spring Cloud Config Server支持git库URL中包含针对{application}和 {profile}的占位符(如果你需要,{label}也可包含占位符, 不过要牢记的是任何情况下label只指git的label)。所以,你可以很容易的支持“一个应用系统一个配置库”策略或“一个profile一个配置库”策略。 模式匹配和多资源库 spring: cloud: config: server: git: uri: https://github.com/spring-cloud-samples/config-repo repos: simple: https://github.com/simple/config-repo special: pattern: special*/dev*,special/dev* uri: https://github.com/special/config-repo local: pattern: local* uri: file:/home/configsvc/config-repo 如果 {application}/{profile}不能匹配任何表达式,那么将使用“spring.cloud.config.server.git.uri”对应的值。在上例子中,对于 "simple" 配置库, 匹配模式是simple/* (也就说,无论profile是什么,它只匹配application名称为“simple”的应用系统)。“local”库匹配所有application名称以“local”开头任何应用系统,不管profiles是什么(来实现覆盖因没有配置对profile的匹配规则,“/”后缀会被自动的增加到任何的匹配表达式中)。 Git搜索路径中的占位符 spring.cloud.config.server.git.searchPaths 3.2.1.2 版本控制后端文件系统使用 伴随着版本控制系统作为后端(git、svn),文件都会被check out或clone 到本地文件系统中。默认这些文件会被放置到以config-repo-为前缀的系统临时目录中。在Linux上,譬如应该是/tmp/config-repo- 目录。有些操作系统routinely clean out放到临时目录中,这会导致不可预知的问题出现。为了避免这个问题,通过设置spring.cloud.config.server.git.basedir或spring.cloud.config.server.svn.basedir参数值为非系统临时目录。 3.2.1.3 文件系统后端 使用本地加载配置文件。 需要配置:spring.cloud.config.server.native.searchLocations跟spring.profiles.active=native。 路径配置格式:classpath:/, classpath:/config,file:./, file:./config。 3.2.1.4 共享配置给所有应用 基于文件的资源库 在基于文件的资源库中(i.e. git, svn and native),这样的文件名application 命名的资源在所有的客户端都是共享的(如 application.properties, application.yml, application-*.properties,etc.)。 属性覆盖 “spring.cloud.config.server.overrides”添加一个Map类型的name-value对来实现覆盖。 例如 spring: cloud: config: server: overrides: foo: bar 会使所有的配置客户端应用程序读取foo=bar到他们自己配置参数中。 3.2.2 健康指示器 通过这个指示器能够检查已经配置的EnvironmentRepository是否正常运行。 通过设置spring.cloud.config.server.health.enabled=false参数来禁用健康指示器。 3.2.3 安全 你可以自由选择任何你觉得合理的方式来保护你的Config Server(从物理网络安全到OAuth2 令牌),同时使用Spring Security和Spring Boot 能使你做更多其他有用的事情。 为了使用默认的Spring Boot HTTP Basic 安全,只需要把Spring Security 增加到classpath中(如org.springframework.boot.spring-boot-starter-security)。默认的用户名是“user”,对应的会生成一个随机密码,这种情况在实际使用中并没有意义,一般建议配置一个密码(通过 security.user.password属性进行配置)并对这个密码进行加密。 3.2.4 加密与解密 如果远程属性包含加密内容(以{cipher}开头),这些值将在通过HTTP传递到客户端之前被解密。 使用略 3.2.5 密钥管理 配置服务可以使用对称(共享)密钥或者非对称密钥(RSA密钥对)。 使用略 3.2.6 创建一个测试密钥库 3.2.7 使用多密钥和循环密钥 3.2.8 加密属性服务 3.3 可替换格式服务 配置文件可加后缀".yml"、".yaml"、".properties" 3.4 文本解释服务 /{name}/{profile}/{label}/{path} 3.5 嵌入配置服务器 一般配置服务运行在单独的应用里面,只要使用注解@EnableConfigServer即可嵌入到其他应用。 3.6 推送通知和总线 添加依赖spring-cloud-config-monitor,激活Spring Cloud 总线,/monitor端点即可用。 当webhook激活,针对应用程序可能已经变化了的,配置服务端将发送一个RefreshRemoteApplicationEvent。 3.7 客户端配置 3.7.1 配置第一次引导 通过spring.cloud.config.uri属性配置Config Server地址 3.7.2 发现第一次引导 如果用的是Netflix,则用eureka.client.serviceUrl.defaultZone进行配置。 3.7.3 配置客户端快速失败 在一些例子里面,可能希望在没有连接配置服务端时直接启动失败。可通过spring.cloud.config.failFast=true进行配置。 3.7.4 配置客户端重试 添加依赖spring-retry、spring-boot-starter-aop,设置spring.cloud.config.failFast=true。默认的是6次重试,初始补偿间隔是1000ms,后续补偿为1.1指数乘数,可通过spring.cloud.config.retry.*配置进行修改。 3.7.5 定位远程配置资源 路径:/{name}/{profile}/{label} "name" = ${spring.application.name} "profile" = ${spring.profiles.active} (actually Environment.getActiveProfiles()) "label" = "master" label对于回滚到之前的版本很有用。 3.7.6 安全 通过spring.cloud.config.password、spring.cloud.config.username进行配置。 答案来源于网络
养狐狸的猫 2019-12-02 02:18:34 0 浏览量 回答数 0

问题

用druid 连接 postgresql ,启动报错?报错

@JFinal 你好,想跟你请教个问题: 我用druid 连接 postgresql ,启动报错,(配置ActiveRecord插件后) ...
爱吃鱼的程序员 2020-06-14 18:27:10 0 浏览量 回答数 1

问题

intellij启动kafka出错? 400 报错

intellij启动kafka出错? 400 报错 D:\ProgramFiles\Java\jdk1.7.0_71\bin\java -Didea.launcher.port=7535 "-Didea.launcher....
爱吃鱼的程序员 2020-06-05 12:30:05 0 浏览量 回答数 1

问题

Java 使用 Jacob 调用 COM 接口大漠插件 dm.dll 报错?报错

JDK & JRE: Jacob Jar: Jacob dll: Main.java package org.csaarg.gui; import com.jacob....
爱吃鱼的程序员 2020-06-07 22:17:51 0 浏览量 回答数 1
阿里云企业服务平台 陈四清的老板信息查询 上海奇点人才服务相关的云产品 爱迪商标注册信息 安徽华轩堂药业的公司信息查询 小程序定制 上海微企信息技术相关的云产品 国内短信套餐包 ECS云服务器安全配置相关的云产品 天籁阁商标注册信息 开发者问答 阿里云建站 自然场景识别相关的云产品 万网 小程序开发制作 视频内容分析 视频集锦 代理记账服务 北京芙蓉天下的公司信息查询