A. apple id密码忘了怎么办cc
首先可以进入苹果官网的 Apple ID 管理页面,如果不知道的话,可以通过网络搜索找到。在页面中点击【重设密码】选项,
2
接下来请在页面中输入想要找回密码的 Apple ID 账户,
3
随后可以通过二种方式来找回密码,这里先以电子邮件为例,
4
接着系统会自动向 Apple ID 这个邮件地址发送一封用于重置密码的邮件,
5
在这里个人使用的是以QQ邮箱来申请的 Apple ID 账户,所以便前往QQ邮箱中查看苹果发来的邮件。值得注意的是,有一些邮件系统可能会把苹果发来的邮件当作是垃圾邮件,如果是这样请前往邮件垃圾箱中查找邮件。如下图所示,在邮件正文内容中可以看到有用于重置密码的链接,点击【立即重设】继续。此外值得注意的是,这封用于重置密码的邮件会在三个小时以后失效,所以请在限制 的时间内处理。
6
接下来便会跳转到苹果用于重置密码的页面,在这里按照苹果对 Apple ID 密码的要求,重新设置新密码就可以了。
B. 如何在 Swift 中使用 CommonCrypto 类进行加密
现在,许多开发者已经不需要在 App 中进行加密处理。即使你在远程服务器上使用了 REST API,通常情况下使用 HTTPS
就可以解决大多数的安全通信问题,剩下的问题可以使用苹果提供的“保护模式”和硬件/软件加密组合方式来解决。然而在很多情况下,你还是需要对通信或文件进行加密。也许你正在把一个现有的涉及到文件/信息加密的方案移植到
iOS 上,也许你在制作一个保密性要求极高的App,或者你只是想提高数据的安全级别(这是一件好事)。
无论是哪种情况,(在iOS和OS
X系统中)Cocoa 都选择 CommonCrypto 来完成任务。然而 CommonCrypto 的 API
使用的仍然是老旧的C风格(C-Style)。这种 API 已经过时了,在 Swift 中用它们非常别扭。此外,在 Swift 中用强类型属性处理
CCCrypt 中不同类型的数据(对称式加密框架的主要加密/解密功能)很不优雅。我们先来看一下 CCCrypt 的定义:
CCCrypt(op: CCOperation, alg: CCAlgorithm, options: CCOptions, key:
UnsafePointer<Void>, keyLength: Int, iv:
UnsafePointer<Void>, dataIn: UnsafePointer<Void>,
dataInLength: Int, dataOut: UnsafeMutablePointer<Void>,
dataOutAvailable: Int, dataOutMoved: UnsafeMutablePointer<Int>)
再来看看 Objective-C(更准确来说是 C 版本的)函数声明:
CCCryptorStatus
CCCrypt( CCOperation op, // operation: kCCEncrypt or kCCDecrypt
CCAlgorithm alg, // algorithm: kCCAlgorithmAES128... CCOptions
options, // operation: kCCOptionPKCS7Padding... const void *key,
// key size_t keyLength, // key length const void *iv,
// initialization vector (optional) const void *dataIn, //
input data size_t dataInLength, // input data length void *dataOut,
// output data buffer size_t dataOutAvailable, // output data
length available size_t *dataOutMoved) // real output data length
generated
在 Objective-C 中,可以简单地使用预定义常量(比如“kCCAlgorithm3DES”)来定义这些参数,然后传入不同的数组和大小,完全不必担心它们的确切类型(给 size_t 参数传入 int 变量,或者给 void 参数传入 char 变量)。这不是最好的做法,但确实可以完成任务(只需要进行一些类型转换)。
但是 Swift 剔除了 Objective-C 中属于 C 的部分,因此我们需要做一些准备工作才能在 Swift 和 Cocoa 中使用 CommonCrypto。
操作(Operation)、算法(Algorithm)和设置(Options)
在
App
中对称编码是最简单的一种发送和接收加密数据的方法。这种方法只有一个密钥,它用于加密和解密操作(非对称加密则不同,它通常使用一对公-私密钥)。对称密码有许多不同的算法,所有的算法都可以有不同的设置。三个主要概念是:操作(加密/解密)、算法(DES,AES,RC4……)和设置,对应
CommonCrypto 的 CCOperation、CCAgorithm 和 CCOptions。
CCOperation、CCAgorithm 和 CCOptions 本质上就是 uint32_t(一个占32位存储的 unsigned int),所以我们可以通过 CommonCrypto 常量来构造它们:
let operation = CCOperation(kCCEncrypt)let algorithm =
CCAlgorithm(kCCAlgorithmAES)let options =
CCOptions(kCCOptionPKCS7Padding | kCCOptionECBMode) Unsafe 指针
Swift
抽象出 Unsafe 指针来对应 C 语言的指针(C-Pointers)。Swift 试图把所有的指针和 C
风格的内存管理器都抽象出来。通常来说你不需要使用它们,除非你需要使用旧式(old-style)API(比如
CommonCrypto)。如果你真的如此不幸,那就需要学习如何处理它们:
在 Swift
中有两种类型的指针:UnsafePointers 和 UnsafeMutablePointers
类型。第一个用于常量寄存器,内存空间上的指针是恒定不变的;第二个用于可变的内存空间。对应到 C 语言,UnsafePointer
类型是”const type “缓冲类型,UnsafeMutablePointer 是”type “缓冲类型(这里的”缓冲”一词只是过去习惯的叫法)。指针的具体类型写在声明之后的<>中,所以如果你想去声明一个”void “类型的指针,需要写成:UnsafeMutablePointer 。如果要声明”const unsigned char “缓冲类型的指针,你需要使用:UnsafePointer
。虽然苹果确实提供了纯 C 类型到 Swift
类型的转换,但是一定要注意,CChar、CInt、CUnsignedLongLong…这样的类型不能直接用在 UnsafePointers
中,需要使用原生的 Swift 类型。这就出现一个问题,到底什么时候能用这些类型呢?我们需要深入一下 Swift 的类型定义:
typealias CShort = Int16typealias CSignedChar = Int8typealias
CUnsignedChar = UInt8typealias CUnsignedInt = UInt32typealias
CUnsignedLong = UInttypealias CUnsignedLongLong = UInt64typealias
CUnsignedShort = UInt16
值得庆幸的是我们不需要实现 UnsafePointers 和
UnsafeMutablePointers 类型的内存管理(只要你使用的是类似 NSData 这样的 Cocoa 对象)。Swift
会自动管理(和桥接)它们。如果你需要加密/解密数据并把密钥存到 NSData 中,那就可以调用 calling data.bytes 或者
data.mutableBytes 来获取对应的 UnsafePointer 和 UnsafeMutablePointer 指针。
另一种得到 UnsafePointer 变量的方式是 & 。处理输出变量时(需要内存的地址)就是通过&符号得到 Int 类型的 Unsafe(Mutable)Pointer 。我们可以在 CCCrypt 中使用这种方法把”Int”变量地址传给最后一个参数 :”dataOutMoved” 。注意:let 定义的变量对应 UnsafePointer 类型,var 变量对应 UnsafeMutablePointer 类型。
现在,我们已经拥有了调用 CCCrypt 所需的所有元素。
桥接
CommonCrypto 还没有兼容 Swift,所以为了使用它,我们需要通过头文件导入 Objective-C 形式的 CommonCrypto。
#import <CommonCrypto/CommonCrypto.h> SymmetricCryptor类
最近我需要做对称加密的项目,为了更容易的加密和解密数据,我建了一个 SymmetricCryptor 类(不要在意这个可怕的名字)。它可以把数据转换成恰当的 CommonCrypto 类型中。你可以使用它来方便的加密或解密数据。
let sc = SymmetricCryptor(algorithm: .AES128, options:
CCOptions(kCCOptionPKCS7Padding))cypher.setRandomIV()do { let cypherText
= try sc.crypt(string: clearText, key: key) } catch { print("Error
while encrypting: /(error)") }
CommonCrypto
提供了多种算法和设置,不过我只想解决最常见的加密问题,因此简化了配置。比如说,使用 RC4 的时候,你可以使用 40 或者 128
位的密钥(对应的常量是 RC4_40 和 RC4_128)。同理,AES 也有一些常用的常量(128b、256b……)。因此我定义了一个名为
SymmetricCryptorAlgorithm 的枚举变量,里面定了许多常见的配置(比如 AES
256),不仅包含算法,还包含很多其他信息,比如密钥长度和块大小。
在 SymmetricCryptor 的 GitHub 页面 中,你可以看到一个对称加密/解密示例,它展示了如何简单地实现对称加密/解密。
C. 苹果手机APPIE ID密码怎么重新设置详细操作
首先请前往苹果官方的 Apple ID 账户管理页面,在页面中有重设密码密码选项;
接下来请输入想要找回的 Apple ID 账户继续;
随后可以通过电子邮件或安全提示问题来找回密码;
如果是采用电子找回的话,在邮箱中会收到苹果发来的一封用于重置密码的邮件;
打开邮件中的重置密码链接,在页面中按照密码要求重新设置就可以了。
参考补充资料:http://jingyan..com/article/67508eb43081839cca1ce48c.html
D. 苹果6的ⅠccⅠD码怎么输
你的苹果6是卡贴机,可以将卡贴和sim卡一起插入卡槽,开机会进入卡贴菜单选择的界面,有编辑iccid的选项。
E. indesign cc文件怎么加密
网上有两种方法激活,一种是替换文件,一种是使用注册机。个人觉得注册机比较好,我自己就用的注册机激活,可以直接在线升级PS新版本。网上教程很多,注册机你要的话留邮箱发给你。
F. ios 怎么对字符串进行aes加密
AES是块加密,每次都是对固定长度的数据进行加密,不够的就需要补了,太长的话,就需要搞成两次运算。所以你需要看看是不是需要分成两次加密运算。
G. 苹果装adobe cc怎么破解
破解软件无非几步吧,
1.在Adobe官网下载你需要的CC试用版软件,
2.先断网,打开adobe
cc试用版一次。
下载网盘链接的zip文件,解压,得到ADOBE
CC的文件夹,里面有一个叫amtlib的framework文件,
3.找到需要破解的adobe
cc软件的内容文件夹(右键APP文件,下拉菜单选择show
package
contents)然后找到一个叫Contents的文件夹,进入,再找一个叫Frameworks的文件夹,然后将amtlib.framework复制到文件夹里面。如果你要破解多个软件,先备份好这个framework文件,或者拖入的同时按住键,这样就是复制并移动(如果你不想一直解压这个zip文件的话就这样吧。
4.每一个需要破解的都这么来一遍,然后就破解成功啦!
具体破解所需文件,请在网上寻找,
建议不要用破解,购买正版软件吧~~
H. 如何将iOS字符串使用MD5进行加密
刚刚使用了MD5对字符串进行MD5加密,总结如下:
<1>将<CommonCrypto/CommonDigest.h>头文件引入,其中包含了进行MD5加密的函数
<2>你可以写一个类,当然也可以写一个方法,觉得怎样便捷可以怎样写。
-(NSString *)encryptStringWithMD5:(NSString *)inputStr{
const char *newStr = [inputStr UTF8String];
unsigned char result[CC_MD5_DIGEST_LENGTH];
CC_MD5(str,(unsigned int)strlen(str),result);
NSMutableString *outStr = [NSMutableString stringWithCapacity:CC_MD5_DIGEST_LENGTH];
for(int i = 0;i<CC_MD5_DIGEST_LENGTH;i++){
[ret appendFormat:@"%02X",result[i]];//注意:这边如果是x则输出32位小写加密字符串,如果是X则输出32位大写字符串
}
return outStr;
}
<3>大功告成,使用这个函数对你的字符串进行MD5加密就可以了.
ret;
}
I. ios 中开发中用户信息中的加密方式有哪些
5.1 通过简单的URLENCODE + BASE64编码防止数据明文传输
5.2 对普通请求、返回数据,生成MD5校验(MD5中加入动态密钥),进行数据完整性(简单防篡改,安全性较低,优点:快速)校验。
5.3 对于重要数据,使用RSA进行数字签名,起到防篡改作用。
5.4 对于比较敏感的数据,如用户信息(登陆、注册等),客户端发送使用RSA加密,服务器返回使用DES(AES)加密。
原因:客户端发送之所以使用RSA加密,是因为RSA解密需要知道服务器私钥,而服务器私钥一般盗取难度较大;如果使用DES的话,可以通过破解客户端获取密钥,安全性较低。而服务器返回之所以使用DES,是因为不管使用DES还是RSA,密钥(或私钥)都存储在客户端,都存在被破解的风险,因此,需要采用动态密钥,而RSA的密钥生成比较复杂,不太适合动态密钥,并且RSA速度相对较慢,所以选用DES)
把相关算法的代码也贴一下吧 (其实使用一些成熟的第三方库或许会来得更加简单,不过自己写,自由点)。注,这里的大部分加密算法都是参考一些现有成熟的算法,或者直接拿来用的。
1、MD5
//因为是使用category,所以木有参数传入啦
-(NSString *) stringFromMD5 {
if(self == nil || [self length] == 0) {
return nil;
}
const char *value = [self UTF8String];
unsigned char outputBuffer[CC_MD5_DIGEST_LENGTH];
CC_MD5(value, strlen(value), outputBuffer);
NSMutableString *outputString = [[NSMutableString alloc] initWithCapacity:CC_MD5_DIGEST_LENGTH * 2];
for(NSInteger count = 0; count < CC_MD5_DIGEST_LENGTH; count++){
[outputString appendFormat:@"%02x",outputBuffer[count]];
}
return [outputString autorelease];
}
2、Base64
+ (NSString *) base64EncodeData: (NSData *) objData {
const unsigned char * objRawData = [objData bytes];
char * objPointer;
char * strResult;
// Get the Raw Data length and ensure we actually have data
int intLength = [objData length];
if (intLength == 0) return nil;
// Setup the String-based Result placeholder and pointer within that placeholder
strResult = (char *)calloc(((intLength + 2) / 3) * 4, sizeof(char));
objPointer = strResult;
// Iterate through everything
while (intLength > 2) { // keep going until we have less than 24 bits
*objPointer++ = _base64EncodingTable[objRawData[0] >> 2];
*objPointer++ = _base64EncodingTable[((objRawData[0] & 0x03) << 4) + (objRawData[1] >> 4)];
*objPointer++ = _base64EncodingTable[((objRawData[1] & 0x0f) << 2) + (objRawData[2] >> 6)];
*objPointer++ = _base64EncodingTable[objRawData[2] & 0x3f];
// we just handled 3 octets (24 bits) of data
objRawData += 3;
intLength -= 3;
}
// now deal with the tail end of things
if (intLength != 0) {
*objPointer++ = _base64EncodingTable[objRawData[0] >> 2];
if (intLength > 1) {
*objPointer++ = _base64EncodingTable[((objRawData[0] & 0x03) << 4) + (objRawData[1] >> 4)];
*objPointer++ = _base64EncodingTable[(objRawData[1] & 0x0f) << 2];
*objPointer++ = '=';
} else {
*objPointer++ = _base64EncodingTable[(objRawData[0] & 0x03) << 4];
*objPointer++ = '=';
*objPointer++ = '=';
}
}
// Terminate the string-based result
*objPointer = '\0';
NSString *rstStr = [NSString stringWithCString:strResult encoding:NSASCIIStringEncoding];
free(objPointer);
return rstStr;
}
3、AES
-(NSData*) EncryptAES: (NSString *) key {
char keyPtr[kCCKeySizeAES256+1];
bzero(keyPtr, sizeof(keyPtr));
[key getCString:keyPtr maxLength:sizeof(keyPtr) encoding:NSUTF8StringEncoding];
NSUInteger dataLength = [self length];
size_t bufferSize = dataLength + kCCBlockSizeAES128;
void *buffer = malloc(bufferSize);
size_t numBytesEncrypted = 0;
CCCryptorStatus cryptStatus = CCCrypt(kCCEncrypt, kCCAlgorithmAES128,
kCCOptionPKCS7Padding | kCCOptionECBMode,
keyPtr, kCCBlockSizeAES128,
NULL,
[self bytes], dataLength,
buffer, bufferSize,
&numBytesEncrypted);
if (cryptStatus == kCCSuccess) {
return [NSData dataWithBytesNoCopy:buffer length:numBytesEncrypted];
}
free(buffer);
return nil;
}
4、RSA
- (NSData *) encryptWithData:(NSData *)content {
size_t plainLen = [content length];
if (plainLen > maxPlainLen) {
NSLog(@"content(%ld) is too long, must < %ld", plainLen, maxPlainLen);
return nil;
}
void *plain = malloc(plainLen);
[content getBytes:plain
length:plainLen];
size_t cipherLen = 128; // currently RSA key length is set to 128 bytes
void *cipher = malloc(cipherLen);
OSStatus returnCode = SecKeyEncrypt(publicKey, kSecPaddingPKCS1, plain,
plainLen, cipher, &cipherLen);
NSData *result = nil;
if (returnCode != 0) {
NSLog(@"SecKeyEncrypt fail. Error Code: %ld", returnCode);
}
else {
result = [NSData dataWithBytes:cipher
length:cipherLen];
}
free(plain);
free(cipher);
return result;
}
J. ios 怎么使用md5进行加密
ios使用md5进行加密的方法:
1、定义头文件:MyAdditions.h
@interface NSString (MyAdditions)
- (NSString *)md5;
@end
@interface NSData (MyAdditions)
- (NSString*)md5;
@end
2、实现主文件:MyAdditions.m
#import "MyAdditions.h"
#import <CommonCrypto/CommonDigest.h> // Need to import for CC_MD5 access
@implementation NSString (MyAdditions)
- (NSString *)md5
{
const char *cStr = [self UTF8String];
unsigned char result[CC_MD5_DIGEST_LENGTH];
CC_MD5( cStr, (int)strlen(cStr), result ); // This is the md5 call
return [NSString stringWithFormat:
@"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
result[0], result[1], result[2], result[3],
result[4], result[5], result[6], result[7],
result[8], result[9], result[10], result[11],
result[12], result[13], result[14], result[15]
];
}
@end
@implementation NSData (MyAdditions)
- (NSString*)md5
{
unsigned char result[CC_MD5_DIGEST_LENGTH];
CC_MD5( self.bytes, (int)self.length, result ); // This is the md5 call
return [NSString stringWithFormat:
@"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
result[0], result[1], result[2], result[3],
result[4], result[5], result[6], result[7],
result[8], result[9], result[10], result[11],
result[12], result[13], result[14], result[15]
];
}
@end