XBOX ONE的语言设置是跟着你选择的服务器走的,这点跟360不同,我个人觉得非常蛋疼。
如果主机地区你选的是美国,那你就只能用英文。如果语言你选的是繁体中文,那地区就只有香港和台湾可选。而且不能使用声音控制主机,因为中文的语音指令是国行独占的,但是不排除微软在将来的更新中也会为其他区域的主机加入中文指令。
本人XBOX Live Gamertag:Kevin CooperPJK 正版360+ONE之前在项目上用到AES256加密解密算法,刚开始在java端加密解密都没有问题,在iOS端加密解密也没有问题。但是奇怪的是在java端加密后的文件在iOS端无法正确解密打开,然后简单测试了一下,发现在java端和iOS端采用相同明文,相同密钥加密后的密文不一样!上网查了资料后发现iOS中AES加密算法采用的填充是PKCS7Padding,而java不支持PKCS7Padding,只支持PKCS5Padding。我们知道加密算法由算法+模式+填充组成,所以这两者不同的填充算法导致相同明文相同密钥加密后出现密文不一致的情况。那么我们需要在java中用PKCS7Padding来填充,这样就可以和iOS端填充算法一致了。
要实现在java端用PKCS7Padding填充,需要用到bouncycastle组件来实现,下面我会提供该包的下载。啰嗦了一大堆,下面是一个简单的测试,上代码!
001 package comencryptfile;
002
003
004 import javaioUnsupportedEncodingException;
005 importjavasecurityKey;
006 import javasecuritySecurity;
007
008 importjavaxcryptoCipher;
009 importjavaxcryptoSecretKey;
010 importjavaxcryptospecSecretKeySpec;
011
012 public classAES256Encryption{
013
014 /
015 密钥算法
016 java6支持56位密钥,bouncycastle支持64位
017 /
018 public static finalString KEY_ALGORITHM="AES";
019
020 /
021 加密/解密算法/工作模式/填充方式
022
023 JAVA6 支持PKCS5PADDING填充方式
024 Bouncy castle支持PKCS7Padding填充方式
025 /
026 public static finalString CIPHER_ALGORITHM="AES/ECB/PKCS7Padding";
027
028 /
029
030 生成密钥,java6只支持56位密钥,bouncycastle支持64位密钥
031 @return byte[] 二进制密钥
032 /
033 public static byte[] initkey() throwsException{
034
035 // //实例化密钥生成器
036 // SecurityaddProvider(new orgbouncycastlejceproviderBouncyCastleProvider());
037 // KeyGenerator kg=KeyGeneratorgetInstance(KEY_ALGORITHM, "BC");
038 // //初始化密钥生成器,AES要求密钥长度为128位、192位、256位
039 //// kginit(256);
040 // kginit(128);
041 // //生成密钥
042 // SecretKey secretKey=kggenerateKey();
043 // //获取二进制密钥编码形式
044 // return secretKeygetEncoded();
045 //为了便于测试,这里我把key写死了,如果大家需要自动生成,可用上面注释掉的代码
046 return new byte[] { 0x08, 0x08, 0x04, 0x0b, 0x02, 0x0f, 0x0b, 0x0c,
047 0x01, 0x03, 0x09, 0x07, 0x0c, 0x03, 0x07, 0, 0x04, 0x0f,
048 0x06, 0x0f, 0x0e, 0x09, 0x05, 0x01, 0, 0, 0x01, 0x09,
049 0x06, 0x07, 0x09, 0x0d };
050 }
051
052 /
053 转换密钥
054 @param key 二进制密钥
055 @return Key 密钥
056 /
057 public static Key toKey(byte[] key) throwsException{
058 //实例化DES密钥
059 //生成密钥
060 SecretKey secretKey=newSecretKeySpec(key,KEY_ALGORITHM);
061 returnsecretKey;
062 }
063
064 /
065 加密数据
066 @param data 待加密数据
067 @param key 密钥
068 @return byte[] 加密后的数据
069 /
070 public static byte[] encrypt(byte[] data,byte[] key) throwsException{
071 //还原密钥
072 Key k=toKey(key);
073 /
074 实例化
075 使用 PKCS7PADDING 填充方式,按如下方式实现,就是调用bouncycastle组件实现
076 CiphergetInstance(CIPHER_ALGORITHM,"BC")
077 /
078 SecurityaddProvider(new orgbouncycastlejceproviderBouncyCastleProvider());
079 Cipher cipher=CiphergetInstance(CIPHER_ALGORITHM, "BC");
080 //初始化,设置为加密模式
081 cipherinit(CipherENCRYPT_MODE, k);
082 //执行 *** 作
083 returncipherdoFinal(data);
084 }
085 /
086 解密数据
087 @param data 待解密数据
088 @param key 密钥
089 @return byte[] 解密后的数据
090 /
091 public static byte[] decrypt(byte[] data,byte[] key) throwsException{
092 //欢迎密钥
093 Key k =toKey(key);
094 /
095 实例化
096 使用 PKCS7PADDING 填充方式,按如下方式实现,就是调用bouncycastle组件实现
097 CiphergetInstance(CIPHER_ALGORITHM,"BC")
098 /
099 Cipher cipher=CiphergetInstance(CIPHER_ALGORITHM);
100 //初始化,设置为解密模式
101 cipherinit(CipherDECRYPT_MODE, k);
102 //执行 *** 作
103 returncipherdoFinal(data);
104 }
105 /
106 @param args
107 @throws UnsupportedEncodingException
108 @throws Exception
109 /
110 public static void main(String[] args) throwsUnsupportedEncodingException{
111
112 String str="AES";
113 Systemoutprintln("原文:"+str);
114
115 //初始化密钥
116 byte[] key;
117 try {
118 key = AES256Encryptioninitkey();
119 Systemoutprint("密钥:");
120 for(int i = 0;i<keylength;i++){
121 Systemoutprintf("%x", key[i]);
122 }
123 Systemoutprint("\n");
124 //加密数据
125 byte[] data=AES256Encryptionencrypt(strgetBytes(), key);
126 Systemoutprint("加密后:");
127 for(int i = 0;i<datalength;i++){
128 Systemoutprintf("%x", data[i]);
129 }
130 Systemoutprint("\n");
131
132 //解密数据
133 data=AES256Encryptiondecrypt(data, key);
134 Systemoutprintln("解密后:"+newString(data));
135 } catch (Exception e) {
136 // TODO Auto-generated catch block
137 eprintStackTrace();
138 }
139
140 }
141 }
运行程序后的结果截图:
ViewControllerm文件
01 //
02 // ViewControllerm
03 // AES256EncryptionDemo
04 //
05 // Created by 孙 裔 on 12-12-13
06 // Copyright (c) 2012年 rich sun All rights reserved
07 //
08
09 #import "ViewControllerh"
10 #import "EncryptAndDecrypth"
11
12 @interface ViewController ()
13
14 @end
15
16 @implementation ViewController
17 @synthesize plainTextField;
18 - (void)viewDidLoad
19 {
20 [super viewDidLoad];
21 // Do any additional setup after loading the view, typically from a nib
22 }
23
24 - (void)didReceiveMemoryWarning
25 {
26 [super didReceiveMemoryWarning];
27 // Dispose of any resources that can be recreated
28 }
29 //这个函数实现了用户输入完后点击视图背景,关闭键盘
30 - (IBAction)backgroundTap:(id)sender{
31 [plainTextField resignFirstResponder];
32 }
33
34 - (IBAction)encrypt:(id)sender {
35
36 NSString plainText = plainTextFieldtext;//明文
37 NSData plainTextData = [plainText dataUsingEncoding:NSUTF8StringEncoding];
38
39 //为了测试,这里先把密钥写死
40 Byte keyByte[] = {0x08,0x08,0x04,0x0b,0x02,0x0f,0x0b,0x0c,0x01,0x03,0x09,0x07,0x0c,0x03,
41 0x07,0,0x04,0x0f,0x06,0x0f,0x0e,0x09,0x05,0x01,0,0,0x01,0x09,
42 0x06,0x07,0x09,0x0d};
43 //byte转换为NSData类型,以便下边加密方法的调用
44 NSData keyData = [[NSData alloc] initWithBytes:keyByte length:32];
45 //
46 NSData cipherTextData = [plainTextData AES256EncryptWithKey:keyData];
47 Byte plainTextByte = (Byte )[cipherTextData bytes];
48 for(int i=0;i<[cipherTextData length];i++){
49 printf("%x",plainTextByte[i]);
50 }
51
52 }
53 @end
附上出处链接:>理光 PJK360 投影机的分辨率可以通过以下步骤进行调整:1按下遥控器上的“菜单”按钮,进入主菜单。2使用方向键向下滚动,选择“图像调整”选项并按下“确认”按钮。3在图像调整菜单中,选择“分辨率”选项并按下“确认”按钮。4选择所需分辨率,然后按下“确认”按钮。您可能需要通过向上或向下滚动的方向键来查看所有可用的选项。5调整完毕后,按下“菜单”按钮退出主菜单。理光PJK360投影机支持多种分辨率,包括800x600、1024x768、1280x720和1920x1080。选择正确的分辨率可以使您的投影画面更加清晰和舒适。除了分辨率调整,您还可以通过调整其他图像设置来改善投影画面,例如亮度、色彩、对比度和锐度。这些选项也可以在图像调整菜单中找到并调整。最后,建议您在使用投影机前,将其放置在正确距离和角度,以获得最佳的投影效果。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)