草庐IT

php - PDO PARAM_STR 和长度

我不明白PDOPARAM_*语句中的长度选项。长度是否表示所需字符的数量,还是最大值?例子:$sth->bindParam(2,$color,PDO::PARAM_STR,12);这需要12个字符,还是限制为12个字符?或者,我是否完全误解了这是在做什么? 最佳答案 它表示您希望在输出参数中接收多少数据,服务器不会发送超过此数量的数据。因此,要回答您的问题,这是一个限制而非要求。 关于php-PDOPARAM_STR和长度,我们在StackOverflow上找到一个类似的问题:

java - RSA/ECB/OAEPWithSHA-256AndMGF1Padding 但 MGF1 使用 SHA-256?

我在Oracle的Java标准加密提供程序中找到了困难的方法Ciphercipher=Cipher.getInstance("RSA/ECB/OAEPWithSHA-256AndMGF1Padding");使用通过SHA-1实例化的MFG1;SHA-256仅用于散列标签(实际上是空的)。我发现在MFG1中实际使用SHA-256的唯一解决方案(在answer和comment的帮助下)是使用Cipher.init的替代形式:cipher.init(Cipher.DECRYPT_MODE,privKey,newOAEPParameterSpec("SHA-256","MGF1",MGF1Pa

java - PKCS5Padding 可以使用 AES/GCM 模式吗?

AES/GCM的填充模式是什么?我知道它可以是NoPadding,因为在ECB模式下它可以是PKCS5Padding,在GCM模式下怎么样?在JCE接口(interface)中,我们需要提供“算法/模式/填充”(Reference)。所以我使用下面的代码来获取实例,它在JDK中工作,但在IBMSDK中失败,它说cannotfindproviderforsupportingAES/GCM/PKCS5PaddingCipher.getInstance("AES/GCM/PKCS5Padding");填充的实际用例是什么? 最佳答案 GC

java - AES-256 和 PKCS7Padding 在 Java 中失败

我有几个库,C#、PHP和Android,它们都以相同的方式加密/解密字符串,因此它们彼此兼容,即C#将数据写入数据库并加密,PHP可以成功解密它并返回原始字符串。我现在需要对标准Java应用程序做同样的事情,所以我从我的Android库中获取代码并需要库,但我遇到了异常。据我所知,代码不是特定于Android的,因此应该不是问题。下面是我的加密函数publicstaticStringencrypt(StringplainPasword){Stringpassword="";try{SecretKeySpeckey=newSecretKeySpec("hcxilkqbbhczfeult

java - String str = new String ("my string") 真的效率低吗?

我经常看到有人说Stringstr=newString("mystring")比写Stringstr="mystring",效率低,因为前者创建一个静态“我的字符串”对象,然后是一个从静态对象复制的String对象。但是,考虑到这里的语言是如此简单和明确,我很难想象Java优化器不会花任何力气将前者简单地转换为后者。为什么它真的会选择更费力的方式呢?如果Java对其进行了优化,会有什么负面影响? 最佳答案 However,giventhatthelanguagehereissosimpleandunambiguous,Icanhar

java - 错误填充异常 : pad block corrupted

我正在尝试使用Rijndael/CBC/PKCS7解密在C#中加密的Java文件。我不断收到以下异常:javax.crypto.BadPaddingException:padblockcorruptedatorg.bouncycastle.jce.provider.JCEBlockCipher.engineDoFinal(UnknownSource)atjavax.crypto.Cipher.doFinal(DashoA13*..)atAESFileDecrypter.decrypt(AESFileDecrypter.java:57)当Web服务器为第一个字节[]调用doFinal(i

java - str.setCharAt(索引 ,'X')

有没有办法使用str.charAt(index)通过索引替换特定的字符?像这样:str.setCharAt(1,'X');//replace2ndcharwith'X'有什么简单的方法可以做到这一点吗? 最佳答案 根据str的来源,您可以这样做:StringBuilderstr=newStringBuilder("Teststring");str.setCharAt(1,'X');str.toString();如果您有一个要拼凑在一起并进行大量修改的字符串,那么使用StringBuilder而不是字符串更有意义。但是,如果您要修改来

java - str[newLength] = '\0' 是什么意思?

我有一个问题,str[newLength]='\0'是什么意思?因为我觉得最后一个字符应该是str[newLength-1],所以我不知道这一行的意思。编写一个方法,将字符串中的所有空格替换为“%20”。假设字符串在字符串末尾有足够的空间来容纳额外的字符,并且给定了字符串的真实长度。我使用了书中的代码,使用字符数组在Java中实现了解决方案(考虑到Java字符串是不可变的):publicclassTest{publicvoidreplaseSpaces(char[]str,intlength){intspaceCount=0,newLength=0,i=0;for(i=0;i=0;i-

java keytool 给出 "final block not properly padded"

根据step3bofthisJettyguideforusingKeytoolandOpenSSL,laststep,我正在执行命令:keytool-importkeystore-srckeystorejetty.pkcs12-srcstoretypePKCS12-destkeystorekeystore当我运行命令时,我得到:keytoolerror:java.io.IOException:failedtodecryptsafecontentsentry:javax.crypto.BadPaddingException:Givenfinalblocknotproperlypadded

mysql中str_to_date的奇怪结果

开发人员为我们创建了一个表格,并将日期字段作为Varchar(255)和“请求的船舶日期”的字段名称。首先是的,我知道这两个都是不良数据库管理,但是我没有参与创建点,而现在,请按照IT的请求报告。因此,我试图将此字段转换为日期值,并正在使用STR_TO_DATE(RequestedShipDate,"%m/%d/%y")(它在代码中具有正确的语法)问题是我得到了一个奇怪的结果。转换后的“请求船舶日期”=5/31/2017=2020-05-31。先感谢您。看答案%y是没有世纪的一年%Y是一年和世纪。因此,2017年被解释为'20,即2020年。