php 中有怎样实现java中的PBEjava实现sm2加密算法法

在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
1.创建公告时有生效的时间段:开始时间和过期时间;
2.当创建新的公告时,要保证同一时间点不能存在三个同时生效的公告
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
每次新建的时候验证,先查出与当前新建的有交叉的集合,然后验证集合中有没有两两交叉的,如果有,那么就会不能创建,这样就保证了不会在同一时间存在三个公告
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
直接写个 sql 就搞定了:
select count(1) from table where start &= 新公告end and end &= 新公告start
如果结果小于3,就创建。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
插入时,遍历表,判断当前时间戳是否在两个时间戳之间,并记录符合该条件的数量,若>=3,不执行插入。否则,插入数据表。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
用两个时间点,统计一下这个时间段里面有效的公告有几个!多余3个就不能创建了。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
一个笨办法,查出所有时间上与新公告有交集的,然后按日做统计
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
试着写了下,可以参考一下,
public class OtherTest {
public static void main(String[] args) {
boolean bn = new OtherTest().test();
System.out.println(bn);
public boolean test(){
//查询出在要添加的公告时间段内的公告时间段
TimeNode node1 =new TimeNode(1, 4);
TimeNode node2 =new TimeNode(1, 4);
TimeNode node3 =new TimeNode(9, 11);
List&TimeNode& list= new ArrayList&TimeNode&();
list.add(node1);
list.add(node2);
list.add(node3);
//是否有交集?
boolean insert =
for(int i=0;i&list.size();i++){
TimeNode nodeI = list.get(i);
for(int j=(i+1);j&list.size();j++){
TimeNode nodeJ = list.get(j);
//如果存在两个时间段有交集 那说明在交集的时间段内已经有2个公告了,不能在添加了
if(nodeI.end & nodeJ.start && nodeI.start & nodeJ.end){
insert = //false return
if(!insert){
class TimeNode{
public TimeNode(int pStart,int pEnd){
start = pS
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
经典线段覆盖问题。不会 Java,给你个 O(n) 的思路。
先找出所有和待验证区间有交集的区间,按区间左端点从小到大排序
记第一个区间为 CurrentInternal
对于 CurrentInternal,考察其下一项 NextInterval:若不与 CurrentInternal 相交,记其为 CurrentInternal,跳至 2;否则,记其交区间为 Intersection。
对于 Intersection,遍历 NextInterval 之后的项:若无与 Intersection 相交的区间,则记 NextInterval 为 CurrentInterval,跳至 2;否则,说明有三个相交的区间,退出。
若遍历完整个列表,则证明待验证区间合法。
附送一个 JS 写的 DEMO,希望大家玩得开心
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。一个php加密方法,怎么用java实现,高分!_百度知道
一个php加密方法,怎么用java实现,高分!
最近做一个php项目的改写,里面有个调第三方webservices用到的加密方法,怎么样用java来实现它。
function getSecureString($s) {
$key = pack(&H*& , '145b206c283b3c534aa4f');
$iv = pack(&H*& , '343c232c2a1b123d'...
bf-cbc的加密方式,求java实现代码,跪求啊,快被逼疯
我有更好的答案
先找出来是什么算法,JAVA 里面的现成的算法还是较多的。看加密的方法,应该是 blowfish
请百度 还是较容易找到的
blowfish JAVA 实现
&int&maxIndex&=&OpenSSLPBECommon.initializeCipher(password,&class&OpenSSLPBEInputStream&&&&&nbsp.crypto.BadPaddingE&&&&import&javax.&&byte[]&&&bufferClear&=&&&iterationCount,&char[]&password)&&Cipher.DECRYPT_MODE;int&index&nbsp.io.IOE&&&&import&&&&import&&import&&&&&&&&private&java.public&readSalt();&&&&&&&&&&&&&&&cipher&=&&&&nbsp,&&&&&&&&&*&1024;public&private&final&nbsp.InvalidKeyE&&&&&&&&&&&&&&&&private&&&nbsp.crypto.NoSuchPaddingE&&{&&&&&&&&&&&&&&&byte[]&salt&=&&&&nbsp.InvalidKeySpecException.security.InvalidAlgorithmParameterE&this.inStream&=&java.&&iterationCount),&&algIn;&&&&&&&&&}&&&&&&&}&&&&&&&&&&@Override&&&&&&&public&int&available()&throws&IOException&{&&&&&&&&&&&return&inStream.available();&&&&&&&}&&&&&&&&&&@Override&&&&&&&public&int&read()&throws&IOException&{&&&&&&&&&&&&&&if&(index&&&maxIndex)&{&&&&&&&&&&&&&&&index&=&0;&&&&&&&&&&&&&&&int&read&=&inStream.read(bufferCipher);&&&&&&&&&&&&&&&if&(read&!=&-1)&{&&&&&&&&&&&&&&&&&&&bufferClear&=&cipher.update(bufferCipher,&0,&read);&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&if&(read&==&-1&||&bufferClear&==&null&||&bufferClear.length&==&0)&{&&&&&&&&&&&&&&&&&&&try&{&&&&&&&&&&&&&&&&&&&&&&&bufferClear&=&cipher.doFinal();&&&&&&&&&&&&&&&&&&&}&catch&(Exception&e)&{&&&&&&&&&&&&&&&&&&&&&&&bufferClear&=&&&&&&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&if&(bufferClear&==&null&||&bufferClear.length&==&0)&{&&&&&&&&&&&&&&&&&&&return&-1;&&&&&&&&&&&&&&&}&&&&&&&&&&&&&&&maxIndex&=&bufferClear.length&-&1;&&&&&&&&&&&}&&&&&&&&&&&&&&if&(bufferClear&==&null&||&bufferClear.length&==&0)&{&&&&&&&&&&&&&&&return&-1;&&&&&&&&&&&}&&&&&&&&&&&&&&return&bufferClear[index++]&&&0&&&&&&&&&&}&&&&&&&&&&private&byte[]&readSalt()&throws&IOException&{&&&&&&&&&&&&&&byte[]&headerBytes&=&new&byte[OpenSSLPBECommon.OPENSSL_HEADER_STRING.length()];&&&&&&&&&&&inStream.read(headerBytes);&&&&&&&&&&&String&headerString&=&new&String(headerBytes,&OpenSSLPBECommon.OPENSSL_HEADER_ENCODE);&&&&&&&&&&&&&&if&(!OpenSSLPBECommon.OPENSSL_HEADER_STRING.equals(headerString))&{&&&&&&&&&&&&&&&throw&new&IOException(&unexpected&file&header&&&+&headerString);&&&&&&&&&&&}&&&&&&&&&&&&&&byte[]&salt&=&new&byte[OpenSSLPBECommon.SALT_SIZE_BYTES];&&&&&&&&&&&inStream.read(salt);&&&&&&&&&&&&&&return&&&&&&&&}&&&&&&&}Java OpenSSLPBEOutputStreamimport&java.io.IOE&&&&import&java.io.OutputS&&&&import&java.security.SecureR&&&&&&&import&javax.crypto.C&&&&&&&public&class&OpenSSLPBEOutputStream&extends&OutputStream&{&&&&&&&private&static&final&int&BUFFER_SIZE&=&5&*&1024&*&1024;&&&&&&&private&final&Cipher&&&&&private&final&OutputStream&outS&&&&private&final&byte[]&buffer&=&new&byte[BUFFER_SIZE];&&&&private&int&bufferIndex&=&0;&&&&&&&public&OpenSSLPBEOutputStream(final&OutputStream&outputStream,&String&algIn,&int&iterationCount,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&char[]&password)&throws&IOException&{&&&&&&&outStream&=&outputS&&&&&&&try&{&&&&&&&&&&&/*&Create&and&use&a&random&SALT&for&each&instance&of&this&output&stream.&*/&&&&&&&&&&&byte[]&salt&=&new&byte[OpenSSLPBECommon.SALT_SIZE_BYTES];&&&&&&&&&&&new&SecureRandom().nextBytes(salt);&&&&&&&&&&&cipher&=&OpenSSLPBECommon.initializeCipher(password,&salt,&Cipher.ENCRYPT_MODE,&algIn,&iterationCount);&&&&&&&&&&&/*&Write&header&*/&&&&&&&&&&&writeHeader(salt);&&&&&&&}&catch&(Exception&e)&{&&&&&&&&&&&throw&new&IOException(e);&&&&&&&}&&&&}&&&&&&&@Override&&&&public&void&write(int&b)&throws&IOException&{&&&&&&&buffer[bufferIndex]&=&(byte)&b;&&&&&&&bufferIndex++;&&&&&&&if&(bufferIndex&==&BUFFER_SIZE)&{&&&&&&&&&&&byte[]&result&=&cipher.update(buffer,&0,&bufferIndex);&&&&&&&&&&&outStream.write(result);&&&&&&&&&&&bufferIndex&=&0;&&&&&&&}&&&&}&&&&&&&@Override&&&&public&void&flush()&throws&IOException&{&&&&&&&if&(bufferIndex&&&0)&{&&&&&&&&&&&byte[]&&&&&&&&&&&&try&{&&&&&&&&&&&&&&&result&=&cipher.doFinal(buffer,&0,&bufferIndex);&&&&&&&&&&&&&&&outStream.write(result);&&&&&&&&&&&}&catch&(Exception&e)&{&&&&&&&&&&&&&&&throw&new&IOException(e);&&&&&&&&&&&}&&&&&&&&&&&bufferIndex&=&0;&&&&&&&}&&&&}&&&&&&&@Override&&&&public&void&close()&throws&IOException&{&&&&&&&flush();&&&&&&&outStream.close();&&&&}&&&&&&&private&void&writeHeader(byte[]&salt)&throws&IOException&{&&&&&&&outStream.write(OpenSSLPBECommon.OPENSSL_HEADER_STRING.getBytes(OpenSSLPBECommon.OPENSSL_HEADER_ENCODE));&&&&&&&outStream.write(salt);&&&&}&&&&&&&}Main Class 测试以上两个classimport&javax.crypto.C&&&&import&javax.crypto.NoSuchPaddingE&&&&import&javax.crypto.SecretK&&&&import&javax.crypto.SecretKeyF&&&&import&javax.crypto.spec.PBEKeyS&&&&import&javax.crypto.spec.PBEParameterS&&&&import&java.security.InvalidAlgorithmParameterE&&&&import&java.security.InvalidKeyE&&&&import&java.security.NoSuchAlgorithmE&&&&import&java.security.spec.InvalidKeySpecE&&&&&&&class&OpenSSLPBECommon&{&&&&&&&protected&static&final&int&SALT_SIZE_BYTES&=&8;&&&&protected&static&final&String&OPENSSL_HEADER_STRING&=&&Salted__&;&&&&protected&static&final&String&OPENSSL_HEADER_ENCODE&=&&ASCII&;&&&&&&&protected&static&Cipher&initializeCipher(char[]&password,&byte[]&salt,&int&cipherMode,&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&final&String&algorithm,&int&iterationCount)&throws&NoSuchAlgorithmException,&InvalidKeySpecException,&&&&&&&&&&&InvalidKeyException,&NoSuchPaddingException,&InvalidAlgorithmParameterException&{&&&&&&&&&&PBEKeySpec&keySpec&=&new&PBEKeySpec(password);&&&&&&&SecretKeyFactory&factory&=&SecretKeyFactory.getInstance(algorithm);&&&&&&&SecretKey&key&=&factory.generateSecret(keySpec);&&&&&&&&&&Cipher&cipher&=&Cipher.getInstance(algorithm);&&&&&&&cipher.init(cipherMode,&key,&new&PBEParameterSpec(salt,&iterationCount));&&&&&&&&&&return&&&&&}}& &来源引用& &;{&&&&&&&&&&private&nbsp.security.streamIn,&String&algIn,&int&&&&&IOException&{&&&&nbsp.io.InputS&&&&import&&&&&import&&0;&&64&&&&&&&extends&InputStream&&nbsp.C&&&&import&javax.import&nbsp.NoSuchAlgorithmE&&&&import&&&&&&final&static&int&&&{&&&&&&&&&&&&&&&throw&&import&&&&&&&&&READ_BLOCK_SIZE&=&new&byte[READ_BLOCK_SIZE];&&&&&&&&&&private&Cipher&final&InputStream&final&byte[]&bufferCipher&=&inS&&&&&&&private&e)&&OpenSSLPBEInputStream(final&InputStream&&&streamIn;&&&&&&&&&&&try&new&IOException(e),&&&(Exception&nbspJava OpenSSLPBEInputStream&=&Integer.MAX_VALUE;&&&&&&&private&}&catch&nbsp.IllegalBlockSizeEthrows&&nbsp
为您推荐:
其他类似问题
您可能关注的内容
php的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。}

我要回帖

更多关于 rsa加密算法java实现 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信