MD5 加密(2)

来源:互联网 发布:新闻发布系统 java 编辑:程序博客网 时间:2024/06/05 17:31



@interface NSString (MyExtensions)
  - (NSString *) md5;
  @end
  @implementation NSString (MyExtensions)
  - (NSString *) md5
  {
  const char *cStr = [self UTF8String];
  unsigned char result[16];
  CC_MD5( cStr, 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


声明对象 //与类的声明格式类似

@interface NSString (NumberConvenience)

- (NSNumber *) lengthAsNumber;

@end // NumberConvenience

//我们正在向String类里面添加一个NumberConvenience方法,可以添加很多个,只要名称不相同

2)实现部分

@implementation NSString (NumberConvenience)

- (NSNumber *) lengthAsNumber

{

unsigned int length = [self length];  //获得字符串的长度

return ([NSNumber numberWithUnsignedInt: length]);

} // lengthAsNumber

@end // NumberConvenience


现在就可以用了

int main (int argc, const char *argv[])

{

NSAutoreleasePool *pool;

pool = [[NSAutoreleasePool alloc] init];

NSMutableDictionary *dict;

dict = [NSMutableDictionary dictionary];

[dict setObject: [@"hello" lengthAsNumber]

forKey: @"hello"];

[dict setObject: [@"iLikeFish" lengthAsNumber]

forKey: @"iLikeFish"];

[dict setObject: [@"Once upon a time" lengthAsNumber]

forKey: @"Once upon a time"];

NSLog (@"%@", dict);

[pool release];

return (0);

} // main

//任何NSString类都将响应lengthAsNumber消息,正式这种兼容性使类别称为一个非常伟大的概念,不需要创建NSString的之类,类别同样可以完成同样的工作