如果您想了解在Swift中生成随机字母数字字符串和在swift中生成随机字母数字字符串的函数的知识,那么本篇文章将是您的不二之选。我们将深入剖析在Swift中生成随机字母数字字符串的各个方面,并为您解
如果您想了解在Swift中生成随机字母数字字符串和在swift中生成随机字母数字字符串的函数的知识,那么本篇文章将是您的不二之选。我们将深入剖析在Swift中生成随机字母数字字符串的各个方面,并为您解答在swift中生成随机字母数字字符串的函数的疑在这篇文章中,我们将为您介绍在Swift中生成随机字母数字字符串的相关知识,同时也会详细的解释在swift中生成随机字母数字字符串的函数的运用方法,并给出实际的案例分析,希望能帮助到您!
本文目录一览:- 在Swift中生成随机字母数字字符串(在swift中生成随机字母数字字符串的函数)
- ASP生成随机字符串(数字+大小写字母)的代码
- Django软件包以生成随机字母数字字符串
- ios – 在Swift 3.0中生成随机字节
- Java-如何生成随机的字母数字字符串?
在Swift中生成随机字母数字字符串(在swift中生成随机字母数字字符串的函数)
如何在Swift中生成随机的字母数字字符串?
答案1
小编典典Swift 4.2更新
Swift
4.2在处理随机值和元素方面引入了重大改进。您可以在此处阅读有关这些改进的更多信息。这是减少到几行的方法:
func randomString(length: Int) -> String { let letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" return String((0..<length).map{ _ in letters.randomElement()! })}
Swift 3.0更新
func randomString(length: Int) -> String { let letters : NSString = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" let len = UInt32(letters.length) var randomString = "" for _ in 0 ..< length { let rand = arc4random_uniform(len) var nextChar = letters.character(at: Int(rand)) randomString += NSString(characters: &nextChar, length: 1) as String } return randomString}
原始答案:
func randomStringWithLength (len : Int) -> NSString { let letters : NSString = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789" var randomString : NSMutableString = NSMutableString(capacity: len) for (var i=0; i < len; i++){ var length = UInt32 (letters.length) var rand = arc4random_uniform(length) randomString.appendFormat("%C", letters.characterAtIndex(Int(rand))) } return randomString}
ASP生成随机字符串(数字+大小写字母)的代码
<%''ASP生成随机字符串(数字+大小写字母)练习
''阿会楠练习,为我所用,非我所想
Function randKey(obj)
Dim char_array(80)
Dim temp
For i = 0 To 9
char_array(i) = Cstr(i)
Next
For i = 10 To 35
char_array(i) = Chr(i + 55)
Next
For i = 36 To 61
char_array(i) = Chr(i + 61)
Next
Randomize
For i = 1 To obj
''rnd函数返回的随机数在0~1之间,可等于0,但不等于1
''公式:int((上限-下限+1)*Rnd+下限)可取得从下限到上限之间的数,可等于下限但不可等于上限
temp = temp&char_array(int(62 - 0 + 1)*Rnd + 0)
Next
randKey = temp
End Function
Response.Write(randKey(6))
%>
- asp.net 简易生成注册码(数字+大小写字母)
- Java 随机生成验证码(支持大小写字母、数字、随机字体)的实例
- javascript生成随机大小写字母的方法
- javascript生成大小写字母
- js随机生成26个大小写字母
Django软件包以生成随机字母数字字符串
我正在构建一个具有独立的前端(Angular或其他JS库)和后端(Django)的应用程序。为了确保将请求发送到服务器的安全性,我想附加一个URL参数say
server/someurl?unique_id=Something-unique
。
我将这段唯一的代码存储在计算机上localStorage
特定的时间。但是,我想在服务器端使用某种功能设置此代码,这不仅会生成此随机字母数字文本,还会根据传入的请求对其进行验证。
例如:
当用户打开应用程序时,它将发送一个server/setCode
,该响应将Local
Storage
使用我将存储在使用JS的此随机生成的字符串进行响应。
在发出请求时,说出server/getdata?someparameter=some_data&unique_id=string_from_local_storage
哪个服务器可以针对生成函数进行验证,然后才处理其余的url。
是否有软件包或模块可以帮助我实现生成和验证?我希望我能传达我想要的东西,因为我缺少编写此函数来生成和测试自己的方法,因此找不到任何解决方案。
ios – 在Swift 3.0中生成随机字节
private static func generaterandomBytes() -> String? { let data = NSMutableData(length: Int(32)) let result = SecRandomcopyBytes(kSecRandomDefault,32,UnsafeMutablePointer<UInt8>(data!.mutableBytes)) if result == errSecSuccess { return data!.base64EncodedString(options: NSData.Base64EncodingOptions(rawValue: 0)) } else { print("Problem generating random bytes") return nil } }
在Swift 3中,我尝试这样做,因为我知道unsafemutablebytes的概念现在不同了,但它不允许我返回.如果我注释掉返回部分,它仍然说无法推断通用参数ResultType
fileprivate static func generaterandomBytes() -> String? { var keyData = Data(count: 32) _ = keyData.withUnsafeMutableBytes {mutableBytes in let result = SecRandomcopyBytes(kSecRandomDefault,keyData.count,mutableBytes) if result == errSecSuccess { return keyData.base64EncodedString(options: NSData.Base64EncodingOptions(rawValue: 0)) } else { print("Problem generating random bytes") return nil } } return nil }
有谁知道如何解决这一问题?
谢谢
解决方法
从封闭,而不是从外部功能.
因此,只应在中调用SecRandomcopyBytes()
关闭,结果传回来.
func generaterandomBytes() -> String? { var keyData = Data(count: 32) let result = keyData.withUnsafeMutableBytes { (mutableBytes: UnsafeMutablePointer<UInt8>) -> Int32 in SecRandomcopyBytes(kSecRandomDefault,mutableBytes) } if result == errSecSuccess { return keyData.base64EncodedString() } else { print("Problem generating random bytes") return nil } }
对于“单表达闭包”,闭包类型可以推断
自动,所以这可以缩短为
func generaterandomBytes() -> String? { var keyData = Data(count: 32) let result = keyData.withUnsafeMutableBytes { SecRandomcopyBytes(kSecRandomDefault,$0) } if result == errSecSuccess { return keyData.base64EncodedString() } else { print("Problem generating random bytes") return nil } }
Java-如何生成随机的字母数字字符串?
我一直在寻找一种简单的 Java算法来生成伪随机的字母数字字符串。在我的情况下,它将用作唯一的会话/密钥标识符,在整个500K+
世代中“可能”是唯一的(我的需求实际上不需要任何更复杂的东西)。
理想情况下,我可以根据自己的独特性要求指定长度。例如,生成的长度为12的字符串可能看起来像"AEYGF7K0DM1X"
。
答案1
小编典典算法
要生成随机字符串,请连接从可接受的符号集中随机抽取的字符,直到字符串达到所需的长度。
实作
这是一些相当简单且非常灵活的代码,用于生成随机标识符。阅读以下信息以获取重要的应用笔记。
public class RandomString { /** * Generate a random string. */ public String nextString() { for (int idx = 0; idx < buf.length; ++idx) buf[idx] = symbols[random.nextInt(symbols.length)]; return new String(buf); } public static final String upper = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; public static final String lower = upper.toLowerCase(Locale.ROOT); public static final String digits = "0123456789"; public static final String alphanum = upper + lower + digits; private final Random random; private final char[] symbols; private final char[] buf; public RandomString(int length, Random random, String symbols) { if (length < 1) throw new IllegalArgumentException(); if (symbols.length() < 2) throw new IllegalArgumentException(); this.random = Objects.requireNonNull(random); this.symbols = symbols.toCharArray(); this.buf = new char[length]; } /** * Create an alphanumeric string generator. */ public RandomString(int length, Random random) { this(length, random, alphanum); } /** * Create an alphanumeric strings from a secure generator. */ public RandomString(int length) { this(length, new SecureRandom()); } /** * Create session identifiers. */ public RandomString() { this(21); }}
用法示例
为8个字符的标识符创建不安全的生成器:
RandomString gen = new RandomString(8, ThreadLocalRandom.current());
为会话标识符创建一个安全的生成器:
RandomString session = new RandomString();
创建具有易于阅读的代码的生成器以进行打印。字符串比完整的字母数字字符串长,以补偿使用较少的
符号:
String easy = RandomString.digits + "ACEFGHJKLMNPQRUVWXYabcdefhijkprstuvwx";RandomString tickets = new RandomString(23, new SecureRandom(), easy);
用作会话标识符
生成可能唯一的会话标识符还不够好,或者你可以只使用一个简单的计数器。使用可预测的标识符时,攻击者会劫持会话。
长度和安全性之间存在张力。标识符越短越容易猜测,因为可能性较小。但是更长的标识符会消耗更多的存储空间和带宽。较大的一组符号会有所帮助,但如果标识符包含在URL中或手动重新输入,则可能会导致编码问题。
会话标识符的基本随机性或熵源应来自为密码学设计的随机数生成器。但是,初始化这些生成器有时可能会在计算上变得昂贵或缓慢,因此应努力在可能的情况下重新使用它们。
用作对象标识符
并非每个应用程序都需要安全性。随机分配可能是多个实体在共享空间中生成标识符而无需任何协调或分区的有效方法。协调可能会很慢,尤其是在群集或分布式环境中,当实体最终共享的份额太小或太大时,划分空间会引起问题。
如果攻击者可能像大多数Web应用程序一样能够查看和操纵它们,则未采取措施使它们无法预测的生成的标识符应受到其他保护。应该有一个单独的授权系统来保护对象,这些对象的标识符可以在没有访问权限的情况下被攻击者猜中。
考虑到预期的标识符总数,还必须小心使用足够长的标识符,以免发生碰撞。这被称为“生日悖论”。发生碰撞的概率 p大约为n 2 /(2q x),其中n是实际生成的标识符的数量,q是字母中不同符号的数量,并且x是标识符的长度。这应该是一个很小的数字,例如2 -50或更少。
得出的结论表明,500k个15个字符的标识符之间发生碰撞的机会约为2到52,这比宇宙射线等未检测到的错误的可能性要小。
与UUID的比较
根据其规范,UUID并非不可预测,因此不应用作会话标识符。
标准格式的UUID占用大量空间:36个字符仅代表122位熵。(并非“随机” UUID的所有位都是随机选择的。)随机选择的字母数字字符串仅21个字符就包含了更多的熵。
UUID不灵活;它们具有标准化的结构和布局。这是他们的主要美德,也是他们的主要弱点。与外部方合作时,UUID提供的标准化可能会有所帮助。仅用于内部使用,它们可能效率很低。
答案2
小编典典Java提供了一种直接执行此操作的方法。如果你不想使用破折号,则很容易将其删除。只需使用uuid.replace("-", "")
import java.util.UUID;public class randomStringGenerator { public static void main(String[] args) { System.out.println(generateString()); } public static String generateString() { String uuid = UUID.randomUUID().toString(); return "uuid = " + uuid; }}
输出:
uuid = 2d7428a6-b58c-4008-8575-f05549f16316
今天关于在Swift中生成随机字母数字字符串和在swift中生成随机字母数字字符串的函数的讲解已经结束,谢谢您的阅读,如果想了解更多关于ASP生成随机字符串(数字+大小写字母)的代码、Django软件包以生成随机字母数字字符串、ios – 在Swift 3.0中生成随机字节、Java-如何生成随机的字母数字字符串?的相关知识,请在本站搜索。
本文标签: