我一直在寻找一种简单的 Java算法来生成伪随机字母数字字符串.在我的情况下,它将被用作一个唯一的会话/密钥标识符,它"很可能"在500K+生成过程中是唯一的(我的需求实际上并不需要更复杂的东西).
理想情况下,我可以根据我的唯一性需求指定长度.例如,生成的长度为12的字符串可能看起来像"AEYGF7K0DM1X".
我有一个Base64编码的图像.在Java中解码它的最佳方法是什么?希望仅使用Sun Java 6附带的库.
Charset问题本身令人困惑和复杂,但最重要的是你必须记住你的charsets的确切名称.是"utf8"吗?还是"utf-8"?或许"UTF-8"?在互联网上搜索代码示例时,您将看到以上所有内容.为什么不将它们命名为常量并使用Charset.UTF8?
我想将一个字符串编码为base64并通过套接字传输并解码回来.但解码后它给出了不同的答案.以下是我的代码,结果是"77 + 9x6s ="
import javax.xml.bind.DatatypeConverter;
public class f{
public static void main(String a[]){
String str = new String(DatatypeConverter.parseBase64Binary("user:123"));
String res = DatatypeConverter.printBase64Binary(str.getBytes());
System.out.println(res);
}
}
Run Code Online (Sandbox Code Playgroud)
有关如何实现这一点的任何想法?
谢谢...
我试图模仿Java中这个curl命令的功能:
curl --basic --user username:password -d "" http://ipaddress/test/login
Run Code Online (Sandbox Code Playgroud)
我使用Commons HttpClient 3.0编写了以下内容但不知何故最终500 Internal Server Error从服务器获取了一个.有人能告诉我,如果我做错了吗?
public class HttpBasicAuth {
private static final String ENCODING = "UTF-8";
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
HttpClient client = new HttpClient();
client.getState().setCredentials(
new AuthScope("ipaddress", 443, "realm"),
new UsernamePasswordCredentials("test1", "test1")
);
PostMethod post = new PostMethod(
"http://address/test/login");
post.setDoAuthentication( true );
try {
int status = client.executeMethod( post );
System.out.println(status + "\n" + …Run Code Online (Sandbox Code Playgroud) 我需要的是加密将显示在二维条码中的字符串(PDF-417),这样当有人想要扫描它时就不会有任何可读性.
其他需求:
它必须足够简单,以摆脱窥探的人,并容易解密其他有兴趣获取数据的公司.他们打电话给我们,我们告诉他们标准或给他们一些简单的密钥,然后可以用于解密.
可能这些公司可以使用不同的技术,因此坚持一些与某些特殊平台或技术无关的标准会更好.
你有什么建议?是否有一些Java类在执行高安全性标准时没有太多的复杂性来执行encrypt()decrypt()?
对于这两个进口;
import sun.misc.BASE64Encoder;
import sun.misc.BASE64Decoder;
Run Code Online (Sandbox Code Playgroud)
我收到了这个错误:
Access restriction: The type BASE64Decoder is not accessible due to restriction on required library C:\Program Files\Java\jre6\lib\rt.jar
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个错误?
当我使用JDK 1.7.0在OS X上编译Spring JDBC源代码时,我收到此警告:
warning: CachedRowSetImpl is internal proprietary API and may be removed in a future release
Run Code Online (Sandbox Code Playgroud)
如何在编译期间禁止显示警告消息?
我已经知道并使用Java的@SuppressWarning注释.我正在寻找具体用法来抑制我所描述的警告.
我的问题具体是,在这行代码中:
@SuppressWarnings("valuegoeshere")
Run Code Online (Sandbox Code Playgroud)
应该用"valuegoeshere"替换什么?
编辑:人们,我知道最好避免导致警告的代码.通常这将是我的方法.但是我在这里编译第三方代码,我不想重写.我只想添加正确的注释来抑制警告,以便我可以实际做些什么的警告不会被埋没.
题
是Java 8 java.util.Base64MIME编码器和解码器一个下拉更换为不支持的,内部的Java API sun.misc.BASE64Encoder和sun.misc.BASE64Decoder?
到目前为止我的想法和原因
根据我的调查和快速测试(见下面的代码),它应该是替代品,因为
sun.misc.BASE64Encoder基于其JavaDoc是RFC1521中规定的BASE64字符编码器.此RFC是MIME规范的一部分......java.util.Base64基于JavaDoc 使用RFC 2045表1中指定的"Base64 Alphabet" 进行编码和解码操作...在MIME下假设RFC 1521和2045没有重大变化(我找不到任何变化)并且基于我使用Java 8 Base64 MIME编码器/解码器的快速测试应该没问题.
我在找什么
以供参考
我的测试代码
public class Base64EncodingDecodingRoundTripTest {
public static void main(String[] args) throws IOException {
String test1 = " ~!@#$%^& *()_+=`| }{[]\\;: \"?><,./ ";
String test2 = test1 + test1;
encodeDecode(test1);
encodeDecode(test2);
}
static …Run Code Online (Sandbox Code Playgroud) 它可能是重复但我面临一些问题,将图像转换Base64为发送它Http Post.我试过这段代码,但它给了我错误的编码字符串.
public static void main(String[] args) {
File f = new File("C:/Users/SETU BASAK/Desktop/a.jpg");
String encodstring = encodeFileToBase64Binary(f);
System.out.println(encodstring);
}
private static String encodeFileToBase64Binary(File file){
String encodedfile = null;
try {
FileInputStream fileInputStreamReader = new FileInputStream(file);
byte[] bytes = new byte[(int)file.length()];
fileInputStreamReader.read(bytes);
encodedfile = Base64.encodeBase64(bytes).toString();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return encodedfile;
}
Run Code Online (Sandbox Code Playgroud)
输出: [B @ 677327b6
但我将这个相同的图像转换成 …