Tag: 编码

如何将Map 编码为Base64字符串?

我喜欢将字符串的java映射编码为单个基本64位编码字符串。 编码的字符串将被传输到远程端点,并且可能由不好的人操纵。 所以应该发生的最糟糕的事情是invaild key,value-tuples,但不应该带来任何其他安全风险。 例: Map map = … String encoded = Base64.encode(map); // somewhere else Map map = Base64.decode(encoded); 是的,必须是Base64。 不喜欢那个 或那个 或任何其他这些 。 是否有现有的轻量级解决方案(Single Utils-Class首选)? 或者我必须创建自己的? 有什么比这更好的? // marshalling ByteArrayOutputStream baos = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(baos); oos.writeObject(map); oos.close(); String encoded = new String(Base64.encodeBase64(baos.toByteArray())); // unmarshalling byte[] decoded = Base64.decodeBase64(encoded.getBytes()); ByteArrayInputStream […]

在Java中将数组字符串转换为字符串并返回

我在Java中有一个数组String [],必须首先将其编码/转换为String,然后在代码中进一步将其转换回String []数组。 问题是我可以在String []数组中的字符串中包含任何字符,因此编码时必须非常小心。 解码它所需的所有信息必须在最终的字符串中。 我不能在额外的变量中返回字符串和其他一些信息。 到目前为止,我设计的算法是: 将所有字符串附加到彼此旁边,例如:String [] a = {“lala”,“exe”,“a”}到字符串b =“lalaexea” 在字符串的末尾附加String []中所有字符串的长度,通过$符号与主文本分隔,然后用逗号分隔每个长度,所以: b =“lalaexea $ 4,3,1” 然后在转换回来的时候,我会首先从后面读取长度,然后根据它们,真正的字符串。 但也许有一种更简单的方法? 干杯!

如何通过任务在gradle中设置环境变量?

我有gradle应用程序。 我的主要gradle文件包含一些任务(groovy)。 我需要在启动我的任务时 – 环境变量“LANG”设置encoding = ru_RU.koi8-r(对于windows,linux),并在完成我的任务后 – 环境变量包含初始值(en_US.UTF-8) 。 怎么样? 请帮帮我。

Java中的字符串到二进制输出

我想从一个字符串得到二进制(011001 ..),但我得到[B @ addbf1,必须有一个简单的转换才能做到这一点,但我没有看到它。 public static String toBin(String info){ byte[] infoBin = null; try { infoBin = info.getBytes( “UTF-8” ); System.out.println(“infoBin: “+infoBin); } catch (Exception e){ System.out.println(e.toString()); } return infoBin.toString(); } 在这里我得到infoBin:[B @ addbf1 我想要infoBin:01001 …… 任何帮助将不胜感激,谢谢!

如何让这段代码提交一个带有jQuery / Ajax工作的UTF-8表单textarea?

我在提交包含带Ajax的UTF-8字符串的表单时遇到问题。 我正在开发一个在Tomcat服务器上运行的Struts Web应用程序。 这是我设置为使用UTF-8的环境: 我已将属性URIEncoding=”UTF-8″ useBodyEncodingForURI=”true”添加到Tomcat的conf/server.xml文件的Connector标记中。 我有一个utf-8_general_ci数据库 我正在使用下一个filter来确保我的请求和响应以UTF-8编码 package filters; import java.io.IOException; import javax.servlet.*; public class UTF8Filter implements Filter { public void destroy() {} public void doFilter(ServletRequest request,ServletResponse response, FilterChain chain) throws IOException, ServletException { request.setCharacterEncoding(“UTF-8”); response.setContentType(“text/html;charset=UTF-8”); chain.doFilter(request, response); } public void init(FilterConfig filterConfig) throws ServletException { } } 我在WEB-INF / web.xml中使用此filter 我正在使用我的JSON响应的下一个代码: public static […]

javax.crypto.IllegalBlockSizeException:解密时最后一个块不完整 – 解密加密的AES字符串

我试图解密我从后端服务器收到的字符串”~9?8?m???=?T?G” ,后端服务器使用OpenSSL使用AES-256-CBC加密字符串。 有代码块: public static String decryptText(String textToDecrypt) { try { byte[] base64TextToDecrypt = Base64.encodeBase64(textToDecrypt.getBytes(“UTF-8”)); byte[] guid = “fjakdsjkld;asfj”.getBytes(“UTF-8”); byte[] iv = new byte[16]; System.arraycopy(guid, 0, iv, 0, guid.length); IvParameterSpec ips = new IvParameterSpec(iv); byte[] secret = DECRYPTION_SECRET_HASH.getBytes(“UTF-8”); SecretKeySpec secretKey = new SecretKeySpec(secret, “AES”); Cipher cipher = Cipher.getInstance(“AES/CBC/PKCS5Padding”); // decryption pass cipher.init(Cipher.DECRYPT_MODE, secretKey, ips); byte[] […]

将具有已知编码的文件转换为UTF-8

我需要将文本文件转换为String,最后,我应该将其作为输入参数(类型InputStream)放到IFile.create(Eclipse)中。 寻找示例或如何做但仍然无法弄清楚……需要你的帮助! 只是为了测试,我尝试将原始文本文件转换为使用此代码编码的UTF-8 FileInputStream fis = new FileInputStream(FilePath); InputStreamReader isr = new InputStreamReader(fis); Reader in = new BufferedReader(isr); StringBuffer buffer = new StringBuffer(); int ch; while ((ch = in.read()) > -1) { buffer.append((char)ch); } in.close(); FileOutputStream fos = new FileOutputStream(FilePath+”.test.txt”); Writer out = new OutputStreamWriter(fos, “UTF8”); out.write(buffer.toString()); out.close(); 但即使最后的* .test.txt文件有UTF-8编码,里面的字符也会被破坏。

Java / Groovy中的Base64编码

在Java中将byte []转换为Base64字符串的正确方法是什么? 更好的是Grails / Groovy因为它告诉我不推荐使用encodeAsBase64()函数。 建议不要使用sun.misc.BASE64Encoder包,并在某些Windows平台上输出不同大小的字符串。

依赖于默认编码,我应该使用什么以及为什么?

FindBugs报告错误: 依赖于默认编码找到对将执行字节到String(或String to byte)转换的方法的调用,并假设默认平台编码是合适的。 这将导致应用程序行为在平台之间变化。 使用备用API并显式指定charset名称或Charset对象。 我像这样使用FileReader(只是一段代码): public ArrayList getValuesFromFile(File file){ String line; StringTokenizer token; ArrayList list = null; BufferedReader br = null; try { br = new BufferedReader(new FileReader(file)); list = new ArrayList(); while ((line = br.readLine())!=null){ token = new StringTokenizer(line); token.nextToken(); list.add(token.nextToken()); … 要纠正我需要改变的错误 br = new BufferedReader(new FileReader(file)); 至 br = new […]

Base64编码对文件名安全吗?

Base64编码是否可以安全地用于Windows和Linux系统上的文件名? 根据我的研究,我发现用-或_替换结果的所有/字符应解决任何问题。 任何人都可以提供更多细节吗? 目前在Java中我使用以下代码: MessageDigest md5Digest = MessageDigest.getInstance(“MD5”); md5Digest.reset(); md5Digest.update(plainText.getBytes()); byte[] digest = md5Digest.digest(); BASE64Encoder encoder = new BASE64Encoder(); hash = encoder.encode(digest); hash.replace(‘/’,’_’);